我搜索并发现这段代码将数据保存到数据库,连接字符串没问题,并且没有抛出异常/错误,但我不知道为什么这段代码没有将数据保存到我的数据库中..
string query = "Insert Into BookConfiguration (BookNum, x_axis, y_axis, BookName) Values (@BookNum, @x_axis, @y_axis, @BookName)";
string connStr = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\BookShelf.mdf;Integrated Security=True;User Instance=True";
try
{
using (SqlConnection conn = new SqlConnection(connStr))
{
SqlDataAdapter da = new SqlDataAdapter();
da.InsertCommand = new SqlCommand(query, conn);
da.InsertCommand.Parameters.Add("@BookNum", SqlDbType.Int).Value = quantity;
da.InsertCommand.Parameters.Add("@x_axis", SqlDbType.Int).Value = x;
da.InsertCommand.Parameters.Add("@y_axis", SqlDbType.Int).Value = y;
da.InsertCommand.Parameters.Add("@BookName", SqlDbType.Text).Value = openFileDialog1.FileName;
conn.Open();
da.InsertCommand.ExecuteNonQuery();
conn.Close();
}
}
catch (SqlException ex)
{
MessageBox.Show("Error Occured " + ex.Message);
}
修改 我现在已经改变了代码相同的问题
代码:
try
{
using (TransactionScope scope = new TransactionScope())
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand(query, conn))
{
cmd.Parameters.Add(new SqlParameter("@BookNum", quantity));
cmd.Parameters.Add(new SqlParameter("@x_axis", x));
cmd.Parameters.Add(new SqlParameter("@y_axis", y));
cmd.Parameters.Add(new SqlParameter("@BookName", openFileDialog1.FileName));
cmd.ExecuteNonQuery();
}
conn.Close();
}
scope.Complete();
}
}
我希望很明显不含糊......
在c#visual studio 2010 sql server 2008中编码...
答案 0 :(得分:4)
我几乎可以保证,因为您使用的是已弃用的User Instances / AttachDbFileName功能,所以您正在查看数据库的不同副本,而不是您的程序。
请参阅@marc_s的答案,了解如何继续:
https://stackoverflow.com/a/10740026/61305
基本上,停止使用这个无用的功能。将您的数据库附加到SQL Server的实际实例,然后修复您的数据库,并且可以连接到与程序相同的副本...