如何使用 C# ADO.NET 更新 excel 行?
How to update a excel row using C# ADO.NET?
我正在使用 Oledb 连接 excel sheet。我的连接工作正常。插入和检索数据也工作正常。但是,当我尝试使用 where 子句更新 excel sheet 中的记录时,我的代码执行成功且没有任何错误,但 excel 行未更新。
我的代码是:
strQry = @"Update [Guests$] set [FirstName]=@FirstName,[LastName]=@LastName,[Address]=@Address,
[EmailId]=@EmailId,[TelNo]=@TelNo,[MobileNo]=@MobileNo,[FaxNo]=@FaxNo where [GuestId]=@GuestId";
using (OleDbConnection con = new OleDbConnection(clsConnection.conStr))
{
using (OleDbCommand cmd = new OleDbCommand(strQry,con))
{
cmd.Parameters.Add("@GuestId", OleDbType.Integer).Value = intId;
cmd.Parameters.Add("@FirstName", OleDbType.VarChar, 15).Value = txtFirstName.Text;
cmd.Parameters.Add("@LastName", OleDbType.VarChar, 15).Value = txtLastName.Text;
cmd.Parameters.Add("@Address", OleDbType.VarChar, 200).Value = txtAddress.Text;
cmd.Parameters.Add("@EmailId", OleDbType.VarChar, 50).Value = txtEmail.Text;
cmd.Parameters.Add("@TelNo", OleDbType.VarChar, 20).Value = txtTelNo.Text;
cmd.Parameters.Add("@MobileNo", OleDbType.VarChar, 15).Value = txtMobileNo.Text;
cmd.Parameters.Add("@FaxNo", OleDbType.VarChar, 20).Value = txtFaxNo.Text;
if (con.State == ConnectionState.Closed)
{
con.Open();
}
cmd.ExecuteNonQuery();
MessageBox.Show(strSuccessMsg);
BinddgvGuests();
ClearControls();
}
}
但是当我删除 where 子句时,所有记录都会更新。
我的 where 子句有问题吗?
找了很多,终于遇到了我的错误。实际上参数应该与查询中的顺序相同。所以我将参数更改为:
cmd.Parameters.Add("@FirstName", OleDbType.VarChar, 15).Value = txtFirstName.Text;
cmd.Parameters.Add("@LastName", OleDbType.VarChar, 15).Value = txtLastName.Text;
cmd.Parameters.Add("@Address", OleDbType.VarChar, 200).Value = txtAddress.Text;
cmd.Parameters.Add("@EmailId", OleDbType.VarChar, 50).Value = txtEmail.Text;
cmd.Parameters.Add("@TelNo", OleDbType.VarChar, 20).Value = txtTelNo.Text;
cmd.Parameters.Add("@MobileNo", OleDbType.VarChar, 15).Value = txtMobileNo.Text;
cmd.Parameters.Add("@FaxNo", OleDbType.VarChar, 20).Value = txtFaxNo.Text;
cmd.Parameters.Add("@GuestId", OleDbType.Integer).Value = intId;
现在这对我来说工作正常。
我正在使用 Oledb 连接 excel sheet。我的连接工作正常。插入和检索数据也工作正常。但是,当我尝试使用 where 子句更新 excel sheet 中的记录时,我的代码执行成功且没有任何错误,但 excel 行未更新。
我的代码是:
strQry = @"Update [Guests$] set [FirstName]=@FirstName,[LastName]=@LastName,[Address]=@Address,
[EmailId]=@EmailId,[TelNo]=@TelNo,[MobileNo]=@MobileNo,[FaxNo]=@FaxNo where [GuestId]=@GuestId";
using (OleDbConnection con = new OleDbConnection(clsConnection.conStr))
{
using (OleDbCommand cmd = new OleDbCommand(strQry,con))
{
cmd.Parameters.Add("@GuestId", OleDbType.Integer).Value = intId;
cmd.Parameters.Add("@FirstName", OleDbType.VarChar, 15).Value = txtFirstName.Text;
cmd.Parameters.Add("@LastName", OleDbType.VarChar, 15).Value = txtLastName.Text;
cmd.Parameters.Add("@Address", OleDbType.VarChar, 200).Value = txtAddress.Text;
cmd.Parameters.Add("@EmailId", OleDbType.VarChar, 50).Value = txtEmail.Text;
cmd.Parameters.Add("@TelNo", OleDbType.VarChar, 20).Value = txtTelNo.Text;
cmd.Parameters.Add("@MobileNo", OleDbType.VarChar, 15).Value = txtMobileNo.Text;
cmd.Parameters.Add("@FaxNo", OleDbType.VarChar, 20).Value = txtFaxNo.Text;
if (con.State == ConnectionState.Closed)
{
con.Open();
}
cmd.ExecuteNonQuery();
MessageBox.Show(strSuccessMsg);
BinddgvGuests();
ClearControls();
}
}
但是当我删除 where 子句时,所有记录都会更新。
我的 where 子句有问题吗?
找了很多,终于遇到了我的错误。实际上参数应该与查询中的顺序相同。所以我将参数更改为:
cmd.Parameters.Add("@FirstName", OleDbType.VarChar, 15).Value = txtFirstName.Text;
cmd.Parameters.Add("@LastName", OleDbType.VarChar, 15).Value = txtLastName.Text;
cmd.Parameters.Add("@Address", OleDbType.VarChar, 200).Value = txtAddress.Text;
cmd.Parameters.Add("@EmailId", OleDbType.VarChar, 50).Value = txtEmail.Text;
cmd.Parameters.Add("@TelNo", OleDbType.VarChar, 20).Value = txtTelNo.Text;
cmd.Parameters.Add("@MobileNo", OleDbType.VarChar, 15).Value = txtMobileNo.Text;
cmd.Parameters.Add("@FaxNo", OleDbType.VarChar, 20).Value = txtFaxNo.Text;
cmd.Parameters.Add("@GuestId", OleDbType.Integer).Value = intId;
现在这对我来说工作正常。