Эй ребята как я могу подключиться и добавить данные в базу данных ms access в VB.NET -что ?
он все еще дает мне ошибки !!! иногда синтаксические ошибки (отсутствует операция в выражении запроса)
а иногда и так :"не разрешается изменять свойство 'ConnectionString'. Текущее состояние соединения открыто."}
Что я уже пробовал:
Dim provider As String Dim dataFile As String Dim connString As String Dim myConnection As OleDbConnection = New OleDbConnection Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source =" dataFile = "D:\Dat.accdb;" connString = provider & dataFile myConnection.ConnectionString = connString myConnection.Open() Dim str As String str = "insert into Dat ([No], [Date], [Name], [Gender],[Age],[Phone],[Desease],[Address],[Building],[Room No],[Room Type],[Price]) VALUES (@No,@Date,@Name,@Gender,@Age,@Phone,@Desease,@Address,@Building,@Room No,@Room Type,@Price) " Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection) cmd.Parameters.Add(New OleDbParameter("No", CType(TextBox1.Text, String))) cmd.Parameters.Add(New OleDbParameter("Name", CType(TextBox2.Text, String))) cmd.Parameters.Add(New OleDbParameter("Gender", CType(TextBox3.Text, String))) cmd.Parameters.Add(New OleDbParameter("Age", CType(TextBox4.Text, String))) cmd.Parameters.Add(New OleDbParameter("Phone", CType(TextBox6.Text, String))) cmd.Parameters.Add(New OleDbParameter("Desease", CType(TextBox7.Text, String))) cmd.Parameters.Add(New OleDbParameter("Address", CType(TextBox8.Text, String))) cmd.Parameters.Add(New OleDbParameter("Building", CType(TextBox10.Text, String))) cmd.Parameters.Add(New OleDbParameter("Room No", CType(TextBox11.Text, String))) cmd.Parameters.Add(New OleDbParameter("Room Type", CType(TextBox12.Text, String))) cmd.Parameters.Add(New OleDbParameter("Price", CType(TextBox13.Text, String))) Try cmd.ExecuteNonQuery() cmd.Dispose() myConnection.Close() TextBox1.Clear() TextBox2.Clear() TextBox3.Clear() TextBox4.Clear() TextBox5.Clear() Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Me.Close() End Sub End Class
Richard MacCutchan
Почему вы храните возраст в виде строки? Скоро это будет неправильно. Храните данные о рождении в виде значения даты, чтобы вы могли вычислить правильный возраст в любое время. Также цена должна быть числового типа, если вы хотите использовать ее для расчетов.
Что касается сообщений об ошибках, покажите нам точно, когда и где они происходят, и какие значения параметров задействованы.
CHill60
Первая ошибка, скорее всего, будет связана с тем, что одно из текстовых полей пусто - кстати, заведите привычку давать своим текстовым полям собственные имена, а не только стандартные.
2-я ошибка, скорее всего, будет заключаться в том, что вы не закрываете свое соединение после каждого вызова.
Тем не менее, слава за использование параметров команды! Я лично предпочитаю использовать AddWithValue, однако каждый по-своему.
Как сказал Ричард, скажите нам точно, в какой строке происходят ошибки и с какими данными