0

几个月来,我一直试图将以下代码写入我的 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();
4

1 回答 1

2

您的代码似乎是正确的(尽管您没有使用 using 语句封闭您的一次性元素,并且不需要两次相同的连接即可打开)但是,您的 SDF 文件在连接字符串中列出,没有任何路径。这意味着这个文件应该在你的程序运行的同一个文件夹中。调试程序时,可执行文件在 BIN\DEBUG 目录中运行,如果插入成功,则数据将插入到 BIN\DEBUG 目录中的 SDF 文件中。

您可以检查您的插入是否可以将整数变量分配给 ExecuteScalar 的返回值。如果此变量为 1,则您的代码已插入记录。

现在,如果您使用检查文件的内容,Server Manager您需要确保显示的数据库与 BIN\DEBUG 中的数据库相同,而不是通常存在于项目文件夹根目录中的基本文件。

另一种可能性是文件所在文件夹的写权限有问题,但这应该会导致异常。

于 2013-10-29T20:56:58.523 回答