我一直试图让以下代码写入我的SQL Server CE数据库数月而没有成功。我的尝试捕获不会捕获抛出的错误,但我的数据不会被写入。有没有人看到我这样做有什么问题?
conn = new SqlCeConnection("Data Source = LaZSolutions.sdf");
conn.Open();
var id = Guid.NewGuid();
SqlCeCommand cmd = conn.CreateCommand();
cmd.CommandText = "INSERT INTO Customers (FirstName, LastName, Address, City, State, Zip, Phone, Mobile, Email, CustomerNum) VALUES(@FirstName, @LastName, @Address, @City, @State, @Zip, @HomePhone, @MobilePhone, @Email, @CustomerNum)";
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
cmd.Parameters.AddWithValue("@FirstName", txtFName.Text);
cmd.Parameters.AddWithValue("@LastName", txtLName.Text);
cmd.Parameters.AddWithValue("@Address", txtAddress.Text);
cmd.Parameters.AddWithValue("@HomePhone", txtHPhone.Text);
cmd.Parameters.AddWithValue("@MobilePhone", txtMPhone.Text);
cmd.Parameters.AddWithValue("@City", txtCity.Text);
cmd.Parameters.AddWithValue("@State", txtState.Text);
cmd.Parameters.AddWithValue("@Zip", txtZip.Text);
cmd.Parameters.AddWithValue("@Email", txtEmail.Text);
cmd.Parameters.AddWithValue("@CustomerNum", id);
cmd.ExecuteNonQuery();
conn1 = new SqlCeConnection("Data Source = LaZSolutions.sdf");
conn1.Open();
SqlCeCommand cmd1 = conn1.CreateCommand();
cmd1.CommandText = "INSERT INTO Orders (OrderNum, OrderDate, Cost, [Open], Comments) VALUES(@OrderNum, @OrderDate, @Cost, @Open, @Comments)";
cmd1.CommandType = CommandType.Text;
cmd1.Connection = conn1;
cmd1.Parameters.AddWithValue("@OrderNum", txtOrderNum.Text);
cmd1.Parameters.AddWithValue("@OrderDate", txtOrderdate.Text);
cmd1.Parameters.AddWithValue("@Cost", lblPrice.Text);
cmd1.Parameters.AddWithValue("@Open", open);
cmd1.Parameters.AddWithValue("@CustomerNum", id);
cmd1.Parameters.AddWithValue("@Comments", txtComments.Text);
cmd1.ExecuteNonQuery();
conn1.Close();
conn.Close();
答案 0 :(得分:2)
您的代码似乎是正确的(尽管您没有使用using语句封装您的一次性元素,并且不需要两次相同的连接就打开)但是,您的SDF文件列在连接字符串中,没有任何路径。这意味着此文件应位于运行程序的同一文件夹中。调试程序时,可执行文件在BIN \ DEBUG目录中运行,如果插入成功,则数据将插入BIN \ DEBUG目录中的SDF文件中。
您可以检查插入是否可以将整数变量分配给ExecuteScalar的返回值。如果此变量为1,则表示您的代码已插入记录。
现在,如果使用Server Manager
检查文件的内容,则需要确保显示的数据库与BIN \ DEBUG中的数据库相同,而不是通常存在于项目根目录中的基本文件文件夹中。
另一种可能性是文件所在文件夹的写权限问题,但这会导致异常。