Oracle中char(20)类型的数据,在通过参数对比的时候会需要在右边填充。见以下代码:
string gzcode;
string sqlStr = "SELECT GZCODE FROM TEST.TB_PUSER WHERE ID = :gzh";
OracleCommand cmd = new OracleCommand(sqlStr);
string t="00001";
t=t.PadRight(20,' '); //在右边填充空格,使字符串长为20
cmd.Parameters.AddWithValue(":gzh", t);
using (OracleConnection conn = new OracleConnection(CDbop.DBConnectionString))
{
cmd.Connection = conn;
conn.Open();
gzcode = cmd.ExecuteOracleScalar().ToString();
}
没有红色那一句的时候,检索不到数据。但有一点非常之“神奇”,如果把SQL语句直接写成sqlStr="SELECT GZCODE FROM TEST.TB_PUSER WHERE ID = '00001'";倒是可以正常检索出数据,猜测是VS查询中过滤掉了字段中的尾空格。但是,一旦使用参数,位数就必须确定。