OracleCommand 参数不会自动匹配

参考:http://www.cnblogs.com/aspnet_csharp/archive/2012/05/15/2501789.html

 

使用Oracle的Oracle.DataAccess.dll的时候,在OracleCommand的commandtext加了一个参数,原以为参数是根据名字自动匹配的,后来发现默认是按顺序的。

如果需要按照参数名称对应传值 ,加上command.BindByName = true

public static (bool Result, string ErrMsg) Oracle_406_fountion2(CsvDataToSQL_406 CsvToSql, string SQL406_connectionString) { using (OracleConnection conn = new OracleConnection(SQL406_connectionString)) { try { conn.Open(); // 使用 Transaction 確保 DELETE 與 INSERT 同時成功或失敗 using (OracleTransaction trans = conn.BeginTransaction()) { // 1. 執行 DELETE string sqlDel = "DELETE FROM QT406RE WHERE QTFNM = :QTFNM"; using (OracleCommand cmdDel = new OracleCommand(sqlDel, conn)) { cmdDel.Parameters.Add(":QTFNM", OracleDbType.Varchar2).Value = CsvToSql.QTFNM; cmdDel.ExecuteNonQuery(); } // 2. 執行 INSERT string sqlIns = @"INSERT INTO QT406RE ( QTFNM, QTDT, QTSTDT, QTLOT, QTAITM, QTRDT1, QTRID1, QTRDT2, QTRID2, QTRDT3, QTRID3, QTRDT4, QTRID4, QTEDDT, QTUPDT ) VALUES ( :QTFNM, :QTDT, :QTSTDT, :QTLOT, :QTAITM, :QTRDT1, :QTRID1, :QTRDT2, :QTRID2, :QTRDT3, :QTRID3, :QTRDT4, :QTRID4, :QTEDDT, :QTUPDT )"; using (OracleCommand cmdIns = new OracleCommand(sqlIns, conn)) { // 正確添加參數的方法 cmdIns.Parameters.Add(":QTFNM", CsvToSql.QTFNM); cmdIns.Parameters.Add(":QTDT", CsvToSql.QTDT); cmdIns.Parameters.Add(":QTSTDT", CsvToSql.QTSTDT); cmdIns.Parameters.Add(":QTLOT", CsvToSql.QTLOT); cmdIns.Parameters.Add(":QTAITM", CsvToSql.QTAITM); cmdIns.Parameters.Add(":QTRDT1", CsvToSql.QTRDT1); cmdIns.Parameters.Add(":QTRID1", CsvToSql.QTRID1); cmdIns.Parameters.Add(":QTRDT2", CsvToSql.QTRDT2); cmdIns.Parameters.Add(":QTRID2", CsvToSql.QTRID2); cmdIns.Parameters.Add(":QTRDT3", CsvToSql.QTRDT3); cmdIns.Parameters.Add(":QTRID3", CsvToSql.QTRID3); cmdIns.Parameters.Add(":QTRDT4", CsvToSql.QTRDT4); cmdIns.Parameters.Add(":QTRID4", CsvToSql.QTRID4); cmdIns.Parameters.Add(":QTEDDT", CsvToSql.QTEDDT); cmdIns.Parameters.Add(":QTUPDT", CsvToSql.QTUPDT); cmdIns.ExecuteNonQuery(); } trans.Commit(); // 全部成功才提交 return (true, ""); } } catch (Exception ex) { return (false, $"SQL執行錯誤: {ex.Message}"); } } }[2025-12-19 -> QT406 CSV轉入Sql失敗! 錯誤: SQL執行錯誤: ORA-01861: 文字與格式字串不符 https://docs.oracle.com/error-help/db/ora-01861/]
最新发布
12-20
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值