我正在尝试将一些示例数据插入到sql server中。
我正在使用Visual Basic 2010 Express。
以下是代码:
Public Sub insert()
Dim myconnect As New SqlClient.SqlConnection
myconnect.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\DATABASE_NUOVO.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
Dim mycommand As SqlClient.SqlCommand = New SqlClient.SqlCommand()
mycommand.Connection = myconnect
mycommand.CommandText = "INSERT INTO utenti (nome) VALUES ('mario')"
myconnect.Open()
Try
mycommand.ExecuteNonQuery()
Catch ex As System.Data.SqlClient.SqlException
MsgBox(ex.Message)
End Try
myconnect.Close()
MsgBox("Success")
End Sub
代码似乎运行正常,但是当我在运行调试后查看数据库时,我看不到示例数据。
问题出在哪里?
由于
答案 0 :(得分:6)
正如我之前在此网站上所说的那样 - 整个用户实例和AttachDbFileName = 方法存在缺陷 - 充其量! Visual Studio将围绕.mdf
文件和最有可能进行复制,您的INSERT
工作正常 - 但您只是查看错误的.mdf文件< / strong>到底!
如果你想坚持这种方法,那么尝试在myConnection.Close()
调用上设置一个断点 - 然后用SQL Server Mgmt Studio Express检查.mdf
文件 - 我几乎可以肯定你的数据在那里。
我认为真正的解决方案将是
安装SQL Server Express(你已经完成了)
安装SQL Server Management Studio Express
在 SSMS Express 中创建数据库,为其指定一个逻辑名称(例如Database_Nuovo
)
使用其逻辑数据库名称(在服务器上创建时给定)连接到它 - 并且不要乱用物理数据库文件和用户实例。在这种情况下,您的连接字符串将类似于:
Data Source=.\\SQLEXPRESS;Database=Database_Nuovo;Integrated Security=True
其他所有内容都完全与以前相同......
另外:检查Copy to Output Directory
目录中DATABASE_NUOVO.mdf
文件的App_Data
属性的值是什么(在Visual Studio Solution Explorer中找到它)。
可能会发生什么(并且经常发生):
Database_Nuovo.mdf
复制到运行该应用程序的输出目录(您的.\debug\bin
目录)INSERT
然后针对.mdf
文件的副本运行并且运行正常Database_Nuovo.mdf
目录中的App_Data
- &gt; 当然您插入的数据不存在,因为它已被插入另一个文件中!答案 1 :(得分:2)
尝试更改Try..Catch
代码以处理比SqlExceptions更多的错误类型。像这样:
Try
mycommand.ExecuteNonQuery()
Catch ex As System.Data.SqlClient.SqlException
MsgBox(ex.Message, , "Sql Exception")
Catch ex As System.Exception
MsgBox(ex.Message, , "General Exception")
End Try
SqlExceptions不是可以抛出的唯一异常。
答案 2 :(得分:0)
试试吧..
Dim con As New SqlConnection
Dim cmd As New SqlCommand
Try
con.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\DATABASE_NUOVO.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True" //check your connection string carefully whether it points right directory
con.Open()
cmd.Connection = con
cmd.CommandText = "INSERT INTO table([field1], [field2]) VALUES([Value1], [Value2])" //make sure here your table and column name is exactly like as your database
cmd.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show("Error while inserting record on table...");
Finally
con.Close()
End Try