所以,我开始在我的主电脑上制作应用程序。数据库工作得很好。
但是当我在第二个Pc或任何其他个人电脑上移动应用程序继续工作时,它会骚扰并抛出此异常:
System.Data.SqlClient.SqlException: 'An attempt to attach an auto-named database for file C:\Users\Cristi\OneDrive\Documente\Licurici\Licurici\qst.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share.'
这是初始连接字符串:
SqlConnection sqc = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\Cristi\OneDrive\Documente\Licurici\Licurici\qst.mdf;Integrated Security=True");
我更改了连接字符串:
SqlConnection sqc = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|qst.mdf;Integrated Security=True");
我也试过这个:
SqlConnection sqc = new SqlConnection(Properties.Settings.Default.qstConnectionString);
最后2个字符串工作正常,并使数据库可移植,但使INSERT命令不再起作用。这是我的sql命令:
sqc.Open();
SqlCommand cmd = new SqlCommand("INSERT INTO Question(quest, a, b, c, d) VALUES(@q, @a, @b, @c, @d)",sqc);
cmd.Parameters.AddWithValue("@q", richTextBox1.Text.ToString());
cmd.Parameters.AddWithValue("@a", richTextBox2.Text.ToString());
cmd.Parameters.AddWithValue("@b", richTextBox3.Text.ToString());
cmd.Parameters.AddWithValue("@c", richTextBox4.Text.ToString());
cmd.Parameters.AddWithValue("@d", richTextBox5.Text.ToString());
cmd.ExecuteNonQuery();
sqc.Close();
所以我问你,我如何创建一个可以在任何电脑上工作的便携式(或嵌入式)数据库,而不必每次都手动更改连接字符串,也可以使用像insert这样的sqlcommands正常工作?
我正在使用.NET框架在Visual Studio 2017中工作。该项目是一个Windows窗体应用程序。
任何帮助表示赞赏! :)