无法更新当前锁定的vb.net错误
我想在ms access的2个不同无法更新当前锁定的vb.net错误,vb.net,sql-insert,Vb.net,Sql Insert,我想在ms access的2个不同表中插入2个不同的数据 它显示了这个错误 我有这样一个代码: try dim sql1,sql2 as string sql1 = "INSERT INTO table1(something)VALUES(something)" cmd = new oledbcommand(sql1, connection) cmd.executenoquery() sql2 = "INSERT INTO table2(something)VALUES(somet
表中插入2个不同的数据
它显示了这个错误
我有这样一个代码:
try
dim sql1,sql2 as string
sql1 = "INSERT INTO table1(something)VALUES(something)"
cmd = new oledbcommand(sql1, connection)
cmd.executenoquery()
sql2 = "INSERT INTO table2(something)VALUES(something)"
cmd2 = new oledbcommand(sql2, connection)
cmd2.executenoquery()
catch ex as exception
msgbox(ex.tostring())
(where these cmd1,cmd2 are defined in controlModule.)
那么,我该怎么办
感谢您的帮助。谢谢我认为关闭连接可以解决问题,最好使用使用
-语句:
try
Using con As OleDbConnection = GetConnection() ' or New OlebConnection(...)
Using cmd = con.CreateCommand()
cmd.CommandText = "INSERT INTO table1(something)VALUES(@something)"
cmd.Parameters.AddWithValue("@something", something)
con.Open()
cmd.ExecuteNonQuery()
End Using
End Using
Using con As OleDbConnection = GetConnection()
Using cmd = con.CreateCommand()
cmd.CommandText = "INSERT INTO table2(something)VALUES(@something)"
cmd.Parameters.AddWithValue("@something", something)
con.Open()
cmd.ExecuteNonQuery()
End Using
End Using
Catch ex As Exception
msgbox(ex.tostring())
End Try
我认为关闭连接可以解决问题,最好使用using
-语句:
try
Using con As OleDbConnection = GetConnection() ' or New OlebConnection(...)
Using cmd = con.CreateCommand()
cmd.CommandText = "INSERT INTO table1(something)VALUES(@something)"
cmd.Parameters.AddWithValue("@something", something)
con.Open()
cmd.ExecuteNonQuery()
End Using
End Using
Using con As OleDbConnection = GetConnection()
Using cmd = con.CreateCommand()
cmd.CommandText = "INSERT INTO table2(something)VALUES(@something)"
cmd.Parameters.AddWithValue("@something", something)
con.Open()
cmd.ExecuteNonQuery()
End Using
End Using
Catch ex As Exception
msgbox(ex.tostring())
End Try
这是一个并发问题。因为代码的其他部分或MS Access本身会同时访问数据库。
事实上,在连接使用后,您不会关闭它。因此,第二次调用应该会失败,并出现该异常。相反,您应该在using语句中包装一次性用品,例如OLEDB连接、命令等。这样,即使发生异常,连接也将关闭:
Using con As New OleDbConnection, cmd1 As OleDbCommand = con.CreateCommand, cmd2 As OleDbCommand = con.CreateCommand()
cmd1.CommandText = "INSERT INTO table1(something)VALUES(something)"
cmd1.ExecuteNonQuery()
cmd2.CommandText = "INSERT INTO table2(something)VALUES(something)"
cmd2.ExecuteNonQuery()
End Using
这是一个并发问题。因为代码的其他部分或MS Access本身会同时访问数据库。
事实上,在连接使用后,您不会关闭它。因此,第二次调用应该会失败,并出现该异常。相反,您应该在using语句中包装一次性用品,例如OLEDB连接、命令等。这样,即使发生异常,连接也将关闭:
Using con As New OleDbConnection, cmd1 As OleDbCommand = con.CreateCommand, cmd2 As OleDbCommand = con.CreateCommand()
cmd1.CommandText = "INSERT INTO table1(something)VALUES(something)"
cmd1.ExecuteNonQuery()
cmd2.CommandText = "INSERT INTO table2(something)VALUES(something)"
cmd2.ExecuteNonQuery()
End Using
你有没有在MS Access中以设计模式打开的表?@Steve没有,我没有。你有没有在MS Access中以设计模式打开的表?@Steve没有,我没有。谢谢,@Tim Schmelter。“这对我很有帮助。谢谢,”蒂姆·施梅尔特说。它帮助了我。