Я использую Environment.CurrentDirectory
, чтобы получить текущий каталог, то есть «D: \ Chuttu \ Проекты \ ЛИК \ Bin \ Debug»Получение физического пути файла в каталоге проекта
Но я хочу, чтобы удалить " \ bin \ Debug "
Как я могу это сделать? Или есть способ, чтобы я мог получить каталог до «LIC»?
На самом деле это моя строка соединения:
Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\LIC.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True
Но когда я использую это и попытаться вставить данные в БД, данные не вставлены. Когда я использую строку соединения с физическим путем он начинает работать:
Data Source=.\SQLEXPRESS;AttachDbFilename=D:\Chuttu VB\Projects\LIC\LIC.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True
Я пытаюсь получить физический путь к файлу mdf
и использовать его в строке подключения.
EDIT:
Этот кусок кода работает отлично:
Private Sub save()
Dim con As New SqlClient.SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=D:\Chuttu VB\Projects\LIC\LIC.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True")
Dim sql As New SqlClient.SqlCommand("INSERT INTO ProposerDetails " & _
"VALUES (" & Convert.ToInt32(PolicyNumberTextBox.Text) & ",'" & NameTextBox.Text & "','" & AgeTextBox.Text & "','" & PhoneTextBox.Text & "','" & AddressTextBox.Text & "','" _
& NomineeTextBox.Text & "','" & NomineeRelationTextBox.Text & "'," & PlanID() & ",'" & PolicyTermTextBox.Text & "','" & PremiumAmountTextBox.Text & "','" _
& PremiumTypeComboBox.Text & "','" & SumProposedTextBox.Text & "','Date')", con)
MsgBox(sql.CommandText)
con.Open()
MsgBox(con.State.ToString)
Dim i As Integer = sql.ExecuteNonQuery
MsgBox(i.ToString)
con.Close()
sql.Dispose()
con.Dispose()
ToolStripStatusLabelMessage.Text = "Saved"
End Sub
Как только я изменить строку подключения к строке соединения с app.config это перестает работать (добавление данных DB):
Private Sub save()
Dim con As New SqlClient.SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\LIC.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True")
Dim sql As New SqlClient.SqlCommand("INSERT INTO ProposerDetails " & _
"VALUES (" & Convert.ToInt32(PolicyNumberTextBox.Text) & ",'" & NameTextBox.Text & "','" & AgeTextBox.Text & "','" & PhoneTextBox.Text & "','" & AddressTextBox.Text & "','" _
& NomineeTextBox.Text & "','" & NomineeRelationTextBox.Text & "'," & PlanID() & ",'" & PolicyTermTextBox.Text & "','" & PremiumAmountTextBox.Text & "','" _
& PremiumTypeComboBox.Text & "','" & SumProposedTextBox.Text & "','Date')", con)
MsgBox(sql.CommandText)
con.Open()
MsgBox(con.State.ToString)
Dim i As Integer = sql.ExecuteNonQuery
MsgBox(i.ToString)
con.Close()
sql.Dispose()
con.Dispose()
ToolStripStatusLabelMessage.Text = "Saved"
End Sub
ПРИМЕЧАНИЕ. У меня нет ошибок.
Прежде всего пути, что вы показываете правильный .. потому что он всегда показывает путь, где приложение запускается из .. смысл ..? Я бы предложил помещать такие вещи, как SqlConnection String, в файл app.config или какой-либо файл .config, который вы используете. вот отличный сайт для того, как форматировать строки подключения. http://www.dofactory.com/Connect/Connect.aspx также перемещает путь/местоположение файла MDF. – MethodMan
. После вашего обновления вы ввели новый набор " те-есть-действительно-плохие идеи "- прочность SQL-инъекции, встроенный SQL, стробированная строка соединения, отсутствие оператора' use'. Я думаю, вы пытаетесь исправить неправильную проблему. Небольшой рефакторинг может пройти долгий путь. –
@Кори, когда я использую строку подключения app.config ... данные не сохраняются в БД. –