我正在使用C#从Oracle迁移到Tibero数据库。>>
问题是使用OleDbParameter添加“ CHAR”类型的参数时,除非根据DB列大小用以下空格填充数据,否则无法检索数据。
((使用OracleParameter或使用OdbcParameter,可以正常查询而不用填充空白作为实际列大小)?
String sSQL = @"SELECT * FROM V_PROD_MA WHERE CAR_TYPE = :CAR_TYPE AND BODY_NO = :BODY_NO"; OleDbDataAdapter adapter = null; //OracleDataAdapter adapter = null; DataTable table = new DataTable(); try { Open(); adapter = new OleDbDataAdapter(sSQL, Connetion); adapter.SelectCommand.Parameters.Add("CAR_TYPE", OleDbType.Char, 4).Value = sCarType; adapter.SelectCommand.Parameters.Add("BODY_NO", OleDbType.Char, 6).Value = sBodyNo; adapter.Fill(table); }
上面是测试源代码,当我设置sCarType ='D0F'时,将检索数据,但是当我设置sCarType ='D0F'时,将不检索数据。
实际列大小为char(4)
。
您可能建议像WHERE
一样更改SQL trim(car_type)
语句,但是我们有大约2,000条SQL语句需要更改,因此我们想避免这种解决方案。
而且我们还使用了一个框架来包装每个SQL命令,参数,并且该框架没有列大小信息来填充空白。
还有其他方法可以避免此类问题吗?
我正在使用C#从Oracle迁移到Tibero数据库。问题是,使用OleDbParameter添加“ CHAR”类型的参数时,除非用以下空格填充,否则无法检索数据...
Tibero社区对开发人员的支持:https://support.tmaxsoft.com/s/community