string strConn = "Provider=\"OraOLEDB.Oracle.1\";User ID=jjcadastre;Data Source=jjcadastre;Password=jjcadastre;Extended Properties=;Persist Security Info=False";
conn = new OleDbConnection(strConn);
conn.Open();
string strComm = "select * from dj_tdqxjbxx where isworked<>1";
OleDbCommand comm = new OleDbCommand(strComm);
comm.CommandType = CommandType.Text;
comm.Connection = conn;
comm.ExecuteNonQuery();
conn.Close();以上代码在今天早上还可以正常运行,但调试几次后,突然就报错了。在comm.ExecuteNonQuery()时报错,提示信息:未将对象引用设置到对象实例。
但数据连接conn都没什么问题,不晓得是什么原因了,郁闷。

解决方案 »

  1.   

    try
    {
    comm.ExecuteNonQuery();
    }
    catch(System.Exception E)
    {
    MessageBox.Show(E.ToString());
    }这样或许能看到详细出错说明.
      

  2.   

    调试一下,看看comm是不是null。
      

  3.   

    conn,comm都不为null的,查看里面的具体信息也没见什么异常。
    就是在comm.ExecuteNonQuery()时报错,提示信息:未将对象引用设置到对象实例。也没有其他可用的信息了
      

  4.   

    都试过了,IIS,。NET,机器,ORACLE服务。
    就差没重装ORACLE和操作系统了
      

  5.   

    dim  odr as OleDbDataReader 
    odr=comm.ExecuteReader
    conn.Close();
    这样试一试
      

  6.   

    //comm.ExecuteNonQuery();
    它适合一些insert/update之类可执行语句,返回值
    >0 表示更新成功并影响到数据库的变化
    =0 表示正确执行,但没更新到数据
    <0 更新失败
      

  7.   

    string strConn = "Provider=\"OraOLEDB.Oracle.1\";User ID=jjcadastre;Data Source=jjcadastre;Password=jjcadastre;Extended Properties=;Persist Security Info=False";
    conn = new OleDbConnection(strConn);
    conn.Open();
    string strComm = "select * from dj_tdqxjbxx where isworked<>1";
    OleDbCommand comm = new OleDbCommand(strComm,conn);
    comm.ExecuteNonQuery();
    conn.Close();
      

  8.   

    建议不要使用...
    comm.ExecuteNonQuery();
    换做别的,比如OleDbDataReader....ExecuteNonQuery一般是对于插入,或者更新时用...查询一般不用这个...
      

  9.   

    昨天的问题解决了
    出错的原因是用oledb的连接方式访问Oracle中的数据时,
    有些字段的数据格式如Oracle的TIMESTAMP,在OLEDB中无法识别
    因此会出错。
    如果将OLEDB换成ORACLE自己的提供程序(OracleConnection,OracleCommand),则可以正常访问
    有相同问题的朋友可以注意下