c# - OLEDBConnection:将字节 [] 插入 blob 不会保存更改
问题描述
我正在尝试使用 OLEDBconnection 更新记录。我要更新的数据(以字节数组形式)将作为 blob 存储在 oracle 中。但是,当线路到达 时ExecuteNonQuery
,什么都没有改变
我试过的:
我认为查询本身有问题。所以我尝试了以下方法:
1:用其他查询测试:
@"UPDATE dcmnts
SET TestCol = ?
where BUSNSS_ID = ?";
通过运行此程序,TestCol
成功更新。它是一个 varchar 列
2:确保绑定与问号出现在查询中的顺序相同,也不起作用
3:最后放a 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
字节数组的事实有关吗?
解决方案
我不确定这是否算作解决方案,但它似乎与 OleDB 有关。
我从来不知道为什么,所以我切换到Oracle.DataAccess.Client
并相应地更改了所有功能。在那之后,它奏效了。
public void SaveSPODLetter(byte[] Letter, string TrackingNumber )
{
string query = @"UPDATE dcmnts
SET SUMMARY_SPOD = :Summary_SPOD
where BUSNSS_ID = :BUSNSS_ID";
OracleCommand command = null;
string ConnString = ConfigurationManager.ConnectionStrings["My_db"].ToString();
using (OracleConnection connection = new OracleConnection(BaseEncryptor.DecryptString(ConnString)))
{
try
{
if (connection.State != ConnectionState.Open)
connection.Open();
command = new OracleCommand(query, connection);
command.Parameters.Add(new OracleParameter("Summary_SPOD", Letter));
command.Parameters.Add(new OracleParameter("BUSNSS_ID", TrackingNumber));
command.ExecuteNonQuery();
//Console.WriteLine($"{rowUpdate} row with {TrackingNumber} updated");
}
finally
{
if (command != null) { command.Dispose(); command = null; }
}
}
}
推荐阅读
- excel - 如何通过双击特定单元格来插入一行以及上述行的格式?
- biztalk - BizTalk 2016 编排
- typescript - 打字稿:向使用“参数”关键字的函数添加打字
- sql - 将 datetime2 转换为 int
- javascript - 表单操作属性不适用于 jQuery 提交
- angular - 无法通过 NGRX 效果关闭 Mat 对话框
- java - 读取 NFC 时在工作资料上启动活动
- ios - 通过经纬度获取一定半径的用户
- visual-studio - 如何在 VS 中更改我的程序语言?
- kubernetes - 为什么 bitnami Fluentd 守护进程不生成日志作为标准输出?