OracleDataReader读取第一条记录
stringtime="selectmax(syslog_date)fromt_syslogwhereopr_user_id="+eID+"andopr_type_val...
string time = "select max(syslog_date) from t_syslog where opr_user_id=" + eID + " and opr_type_value=8 and syslog_cont like '%登录客户端%'";
OracleCommand cmd = new OracleCommand(time, DataBase.con);
DataBase.con.Open();
OracleDataReader dr = cmd.ExecuteReader();
发现用dr.Read()只能从第二条记录开始读取,那应该如何只读取第一条记录?
查出问题了,如果去掉后面的那句syslog_cont like '%登录客户端%就能查到数据,可是这句查询语句在数据库中调试时有返回值。是like用在C#的时候写法不一样么? 展开
OracleCommand cmd = new OracleCommand(time, DataBase.con);
DataBase.con.Open();
OracleDataReader dr = cmd.ExecuteReader();
发现用dr.Read()只能从第二条记录开始读取,那应该如何只读取第一条记录?
查出问题了,如果去掉后面的那句syslog_cont like '%登录客户端%就能查到数据,可是这句查询语句在数据库中调试时有返回值。是like用在C#的时候写法不一样么? 展开
1个回答
展开全部
like 在oracle中直接执行,和 在 c# 中执行 效果应该是一样的。
是不是没有满足 syslog_cont like '%登录客户端%' 条件的数据
max(syslog_date) 在有满足条件的数据的时候,取满足数据的最大值。
max(syslog_date) 在没有满足条件的数据的时候,返回 null 值; 注意,是有行返回的,bug位null。
是不是没有满足 syslog_cont like '%登录客户端%' 条件的数据
max(syslog_date) 在有满足条件的数据的时候,取满足数据的最大值。
max(syslog_date) 在没有满足条件的数据的时候,返回 null 值; 注意,是有行返回的,bug位null。
更多追问追答
追问
这个语句直接在数据库中操作的时候返回的有数据,但是放在程序里就不行了。把那个like语句去掉,就能返回值,一加上就报错,返回的就是空值。
追答
返回空值是对的啊,我上面给你解释了,没有满足条件数据的时候,max返回的就是空值null。
你在取值的时候判断一下是否空值就行了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询