2012-10-29 123 views
1
String nam = name.Text; 
SqlConnection cn = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\test.mdf;Integrated Security=True;User Instance=True"); 
SqlCommand cmd = new SqlCommand("INSERT INTO tab(tname)VALUES(@val)", cn); 
cmd.Parameters.AddWithValue("@val", nam); 
cn.Open(); 
int cnt = cmd.ExecuteNonQuery(); 
MessageBox.Show("Message:" + cnt); 
cn.Close(); 

这是我的代码。该消息显示Message:1。但该值未插入数据库测试中。表名是带有列名tname的选项卡。数据库中未插入数据

什么可能会出错?

+0

你缺少','最后的连接串。我不确定。 –

+0

返回1表示代码实际插入到数据库中,也许你似乎需要刷新管理工作室才能看到实际结果 –

回答

0

这整个用户实例和AttachDbFileName =方法有缺陷 - 充其量! Visual Studio将复制.mdf文件(到Visual Studio运行你的应用程序的输出目录)和最有可能,你的INSERT工作得很好 - 但你只是看着错误的.mdf文件结束!

如果你想坚持使用这种方法,那么试着在cn.Close()调用上放一个断点 - 然后用SQL Server Mgmt Studio Express检查.mdf文件 - 我几乎可以确定你的数据在那里。

在我看来真正的解决方案

  1. 安装SQL Server Express(和你已经做到这一点无论如何)

  2. 安装SQL Server Management Studio中快速

  3. 创建您的数据库在SSMS Express,给它一个逻辑名称(例如TestDB

  4. 使用其逻辑数据库名称连接到它(在服务器上创建时给出) - 并且不要乱用物理数据库文件和用户实例。在这种情况下,您的连接字符串将是这样的:

    Data Source=.\\SQLEXPRESS;Database=TestDB;Integrated Security=True 
    

    和其他一切是正是和以前一样......