【发布时间】:2021-08-16 14:56:41
【问题描述】:
我正在尝试使用 OLEDBconnection 更新记录。我要更新的数据(以字节数组形式)将作为 blob 存储在 oracle 中。但是,当线路到达ExecuteNonQuery 时,什么都没有改变
我尝试过的:
我认为查询本身存在问题。所以我尝试了以下方法:
1:用其他查询测试:
@"UPDATE dcmnts
SET TestCol = ?
where BUSNSS_ID = ?";
通过运行此程序,TestCol 已成功更新。它是一个 varchar 列
2:确保绑定与问号出现在查询中的顺序相同,也不起作用
3:在最后放一个Console.WriteLine,它提示:“1 row with 12345678 updated”,所以它确实更新了,但是当我检查Oracle Developer时,Summary_SPOD列仍然为空
public void SaveSPODLetter(byte[] Letter, string TrackingNumber )
{
string query = @"UPDATE dcmnts
SET SUMMARY_SPOD = ?
where BUSNSS_ID = ?";
OleDbCommand command = null;
string ConnString = ConfigurationManager.ConnectionStrings["My_db"].ToString();
using (OleDbConnection connection = new OleDbConnection(BaseEncryptor.DecryptString(ConnString)))
{
try
{
if (connection.State != ConnectionState.Open)
connection.Open();
command = new OleDbCommand(query, connection);
command.Parameters.Add(new OleDbParameter("SUMMARY_SPOD", Letter));
command.Parameters.Add(new OleDbParameter("BUSNSS_ID", TrackingNumber));
int rowUpdate = command.ExecuteNonQuery();
Console.WriteLine($"{rowUpdate} row with {TrackingNumber} updated");
}
finally
{
if (command != null) { command.Dispose(); command = null; }
}
}
}
我不知道为什么它仍然显示错误,这是否与 Letter 是一个字节数组有关?
【问题讨论】:
-
试试
command.Parameters.Add("Letter", OleDbType.VarBinary).Value = Letter; -
不幸的是@Izzy 同样的事情
标签: c# oracle visual-studio oledb