c#本地数据库插入不起作用
c# Local Database insert into doesn't work
我试了很多次都插入不成功!
请帮帮我..
代码:
SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True");
conn.Open();
SqlCommand cmd = new SqlCommand("INSERT INTO mytbl(Id, Nav) VALUES('yek','du')", conn); //yek and du are examples
//Following command doesn't work, too
//"INSERT INTO mytbl(Id, Nav) VALUES('"+tb.Text+"','"+tb2.Text+"')"
cmd.ExecuteNonQuery();
conn.Close();
整个 User Instance 和 AttachDbFileName= 方法是有缺陷的 - 充其量!当 运行 你的应用程序在 Visual Studio 时,它将围绕 .mdf
文件进行复制(从你的 App_Data
目录到输出目录 - 通常是 .\bin\debug
- 你应用程序运行)并且很可能,你的INSERT
工作得很好 - 但你只是在查看错误的.mdf文件结束!
如果您想坚持使用这种方法,请尝试在 myConnection.Close()
调用上放置一个断点 - 然后使用 SQL Server Mgmt Studio Express 检查 .mdf
文件 - 我我几乎可以肯定你的数据在那里。
我认为真正的解决方案是
安装 SQL Server Express(无论如何你已经完成了)
安装SQL Server Management Studio Express
在 SSMS Express 中创建您的数据库,为其指定一个合乎逻辑的名称(例如 VictoryDatabase
)
使用它的逻辑 数据库名称 连接到它(当你在服务器上创建它时给定的) - 不要乱用物理数据库文件和用户实例。在这种情况下,您的连接字符串将类似于:
Data Source=.\SQLEXPRESS;Database=VictoryDatabase;Integrated Security=True
其他一切完全和以前一样...
另请参阅 Aaron Bertrand 的精彩博客 post Bad habits to kick: using AttachDbFileName 了解更多背景信息。
您的代码正在运行,但 db(.mdf) 被首先复制到 \bin\debug 目录,应用程序正在使用该目录(\bin\debug \Database1.mdf)。使用以下代码获取应用程序根目录中存在的 db (.mdf) 路径。
string path = AppDomain.CurrentDomain.BaseDirectory.ToLower().Replace("\bin", "").Replace("\debug", "").Replace("\release", "").TrimEnd('\');
string conStr = "Data Source=(LocalDB)\v11.0;AttachDbFilename=" + path + "\Database1.mdf;Integrated Security=True";
我试了很多次都插入不成功! 请帮帮我..
代码:
SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True");
conn.Open();
SqlCommand cmd = new SqlCommand("INSERT INTO mytbl(Id, Nav) VALUES('yek','du')", conn); //yek and du are examples
//Following command doesn't work, too
//"INSERT INTO mytbl(Id, Nav) VALUES('"+tb.Text+"','"+tb2.Text+"')"
cmd.ExecuteNonQuery();
conn.Close();
整个 User Instance 和 AttachDbFileName= 方法是有缺陷的 - 充其量!当 运行 你的应用程序在 Visual Studio 时,它将围绕 .mdf
文件进行复制(从你的 App_Data
目录到输出目录 - 通常是 .\bin\debug
- 你应用程序运行)并且很可能,你的INSERT
工作得很好 - 但你只是在查看错误的.mdf文件结束!
如果您想坚持使用这种方法,请尝试在 myConnection.Close()
调用上放置一个断点 - 然后使用 SQL Server Mgmt Studio Express 检查 .mdf
文件 - 我我几乎可以肯定你的数据在那里。
我认为真正的解决方案是
安装 SQL Server Express(无论如何你已经完成了)
安装SQL Server Management Studio Express
在 SSMS Express 中创建您的数据库,为其指定一个合乎逻辑的名称(例如
VictoryDatabase
)使用它的逻辑 数据库名称 连接到它(当你在服务器上创建它时给定的) - 不要乱用物理数据库文件和用户实例。在这种情况下,您的连接字符串将类似于:
Data Source=.\SQLEXPRESS;Database=VictoryDatabase;Integrated Security=True
其他一切完全和以前一样...
另请参阅 Aaron Bertrand 的精彩博客 post Bad habits to kick: using AttachDbFileName 了解更多背景信息。
您的代码正在运行,但 db(.mdf) 被首先复制到 \bin\debug 目录,应用程序正在使用该目录(\bin\debug \Database1.mdf)。使用以下代码获取应用程序根目录中存在的 db (.mdf) 路径。
string path = AppDomain.CurrentDomain.BaseDirectory.ToLower().Replace("\bin", "").Replace("\debug", "").Replace("\release", "").TrimEnd('\');
string conStr = "Data Source=(LocalDB)\v11.0;AttachDbFilename=" + path + "\Database1.mdf;Integrated Security=True";