为什么更新 OLEDB 查询不执行任何操作?
Why doesn't the update OLEDB query do nothing?
我在我的程序中使用 OLEDB 来更新 excel sheet。 Execute returns 1 as row update count,但没有任何改变。
我的代码如下:
public static void updateExcel(string sql, string path)
{
try
{
OleDbConnection con;
OleDbCommand comm = new OleDbCommand();
con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
path +
";Extended Properties=Excel 12.0;");
con.Open();
comm.Connection = con;
comm.CommandText = sql;
int y = comm.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
}
}
呼叫是:
string sql = "update [Sh1$] set j = j + ' AAAA ' where a = '" + excelData.Rows[i]["a"].ToString() + "'";
EXCEL.updateExcel(sql, excelFile);
有人知道问题出在哪里吗?
谢谢!
尝试使用以下方法重写:
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
try
{
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandText = @"update [Sh1$] set j = j + ' AAAA ' where a = '" + excelData.Rows[i]["a"].ToString() + "'";
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
//exception here
}
finally
{
conn.Close();
conn.Dispose();
}
}
检查 excel 中的单元格是否为空。如果是这样,这: set j = j + ' AAAA '
将不起作用,因为 j
是 NULL
.
在这种情况下,这样会更好:
set j = ' AAAA '
或
set j = IIF(j IS NULL, ' AAAA ', j + ' AAAA ')
我在我的程序中使用 OLEDB 来更新 excel sheet。 Execute returns 1 as row update count,但没有任何改变。 我的代码如下:
public static void updateExcel(string sql, string path)
{
try
{
OleDbConnection con;
OleDbCommand comm = new OleDbCommand();
con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
path +
";Extended Properties=Excel 12.0;");
con.Open();
comm.Connection = con;
comm.CommandText = sql;
int y = comm.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
}
}
呼叫是:
string sql = "update [Sh1$] set j = j + ' AAAA ' where a = '" + excelData.Rows[i]["a"].ToString() + "'";
EXCEL.updateExcel(sql, excelFile);
有人知道问题出在哪里吗?
谢谢!
尝试使用以下方法重写:
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
try
{
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandText = @"update [Sh1$] set j = j + ' AAAA ' where a = '" + excelData.Rows[i]["a"].ToString() + "'";
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
//exception here
}
finally
{
conn.Close();
conn.Dispose();
}
}
检查 excel 中的单元格是否为空。如果是这样,这: set j = j + ' AAAA '
将不起作用,因为 j
是 NULL
.
在这种情况下,这样会更好:
set j = ' AAAA '
或
set j = IIF(j IS NULL, ' AAAA ', j + ' AAAA ')