sql为:select max(id) from tb_temp
object objTemp=dbCommand.ExecuteScalar();
察看objTemp,值为0,结果执行int i=(int)objTemp,报错"无法执行转换"
为什么?

解决方案 »

  1.   

    int x = int.Parse(dbCommand.ExecuteScalar().ToString());试试
      

  2.   

    id字段在access中是长整型的,而且当id的最大值大于0的时候,这个程序可以顺利运行.请指教.
      

  3.   

    用了long,还是不行
    刚刚做了测试如下:数据库内容:
    id   name
    0    wawaOledbDataCommand dbComm=new OleDbDataCommand("select max(id) from tb_temp",myConn);
    MessageBox.Show(dbComm.ExecuteScalar().GetType().ToString());
    显示:System.Int16然后:
    OledbDataCommand dbComm=new OleDbDataCommand("select max(id) from tb_temp",myConn);
    MessageBox.Show(dbComm.ExecuteScalar().ToString());
    显示:0然后:
    OledbDataCommand dbComm=new OleDbDataCommand("select max(id) from tb_temp",myConn);
    int maxid=(int)dbComm.ExecuteScalar();//在这里报错:指定的转换无效,使用long maxid=(long)dbComm.ExecuteScalar();也不行
    MessageBox.Show(maxid.ToString());为什么?百思不解
      

  4.   

    补充:当max(id)不为0的时候,没有这个问题
      

  5.   

    http://www.mzedu.com/这个网站上有答案!
      

  6.   

    用Convert.toInt32,参数可以给object的,应该就没问题了吧?
      

  7.   

    Convert.ToInt32()应该可以...另外...这样也行
    if(dbComm.ExecuteScalar().ToString()=="0")
       id = 0;
    else
       id = (int)dbComm.ExecuteScalar();嘻嘻...
      

  8.   

    看看DBNull.Value 就明白了
      

  9.   

    我也一样遇到这样的问题,一4星的哥们告诉我这个的,看了看MSDN才明白,你也看一看吧