所以我有一个C#软件会将数据保存到我的数据库中,但每次运行我的程序并尝试保存数据时都会收到此消息,请帮忙吗?
try
{
SqlConnection cnn = new SqlConnection(@"Data Source=.\SQLEXPRESS;
AttachDbFilename=C:\Users\Hp\Documents\Visual Studio 2010\Projects\Bank_System\Bank_System\Bank_System.sdf;
Integrated Security=True;User Instance=True");
cnn.Open();
SqlCommand cmd1 =
new SqlCommand("insert into user values('" +
textBox6.Text + "','" + textBox1.Text + "','" + textBox4.Text + "'," +
textBox3.Text + ",'" + textBox2.Text + "','" + textBox5.Text + "')",
cnn);
SqlDataReader dr1 = cmd1.ExecuteReader();
dr1.Close();
MessageBox.Show(" Record inserted ", " information inserted");
cnn.Close();
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message);
}
答案 0 :(得分:0)
将数据库Bank_System.sdf复制到\ bin \ debug \文件夹中并更改连接字符串,如下所示:
SqlConnection cnn = new SqlConnection("Data Source=" +@".\SQLEXPRESS;
AttachDbFilename=Bank_System.sdf;
Integrated Security=True;User Instance=True");
应该可以工作,如果发生错误,请尝试从位于\ bin \ debug \ folder
中的yourapp.exe执行您的应用程序答案 1 :(得分:0)
您正在使用SDF文件。此文件适用于SQL Server Compact而不适用于SQL Server Express(或完整版)。
在这种情况下,连接字符串应该是:
@"Data Source=<fullpath_and file_to_your_sdf_file>;Persist Security Info=False;"
请注意,在C#中,您需要在包含特殊字符(如反斜杠)的字符串前面添加逐字符
使用Sql Server Compact需要安装Microsoft Downloads所需的库并使用正确的类。因此,删除SqlConnection和SqlCommand类并使用SqlCeConnection和SqlCeCommand(依此类推,以用于您应用程序中使用的其他数据客户端类)。
当然,SqlCeConnection类可以理解这种不同的连接字符串语法,并允许使用SDF文件
说,请修改构建sql命令的代码。像代码一样使用字符串连接是一个安全的错误配方。从解析错误(字符串中的引号将破坏语法)到更严重的错误,如Sql Injections
这可能是一种使用参数化查询的方法....
try
{
string cmdText = "insert into user values(@p1, @p2, @p3,@p4,@p5,@p6)";
using(SqlCeConnection cnn = new SqlCeConnection(@"Data Source=C:\Users\Hp\Documents\Visual Studio 2010\Projects\Bank_System\Bank_System\Bank_System.sdf;Integrated Security=True"))
using(SqlCeCommand cmd1 = new SqlCeCommand(cmdText, cnn))
{
cnn.Open();
cmd.Parameters.AddWithValue("@p1", textBox6.Text);
cmd.Parameters.AddWithValue("@p2", textBox1.Text);
cmd.Parameters.AddWithValue("@p3", textBox4.Text);
cmd.Parameters.AddWithValue("@p4", textBox3.Text);
cmd.Parameters.AddWithValue("@p5", textBox2.Text);
cmd.Parameters.AddWithValue("@p6", textBox5.Text);
cmd1.ExecuteNonQuery();
MessageBox.Show(" Record inserted ", " information inserted");
}
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message);
}