Access中没数据.取int类型的MAX的时候有问题,请教一下.
1.int类型时:
如果没记录maxid,从1开始(如1 2 3 4 这样排列),如果有记录maxid取最大值后再加1.
conn = Connect.OpenNewConnection();
StringBuilder sb = new StringBuilder();
sb.Append("select max(id)as maxid from users");//虽然没记录,但是max还是会有个空行,
OleDbCommand selectSql = new OleDbCommand(sb.ToString(), conn);
OleDbDataReader datareader = selectSql.ExecuteReader();
if (没记录)//这个if else怎么写?
{  maxid =1}
else
{  maxid取最大值后加1}2.文本类型时:也是1 2 3 4这样排列,但是如果文本类型取最大值,9会大于10.这问题怎么解决?

解决方案 »

  1.   

    问题一:
    尝试判断条件为 OleDbDataReader.Item (0) == DBNull
    问题二:
    应该转换为int以后比较或者你在录入他的string值的时候直接录入01,02,03---09
      

  2.   

    为何不设置为自动增量呢?
    这样当new的时候,数据记录自动增加多好~
      

  3.   

    先try Convert.ToInt32()一下,再比较,这样行不?
      

  4.   

    OleDbDataReader datareader = selectSql.ExecuteReader(); 将结果赋值给了OleDbDataReader 的对象 datareader. 但是并没有你说的 Item  这个属性.
    或者是说如果取 datareader 中的值也可以..  如果用datareader.read()是不行吧,就算没记录,max也会有空行.
      

  5.   

    你这是要自动生成ID?
    如果是,为何不试试用填充的datatable(order by ?)中去取最大的MAX项呢,似乎不会出错。
      

  6.   

    不是自动生成的....  还是用的 datareader.read()  然后再判断是否为空...      多用一个if...   其实我就想少用一个if..  看看有没用直接能判断出来的方法~~