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都没什么问题,不晓得是什么原因了,郁闷。
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都没什么问题,不晓得是什么原因了,郁闷。
{
comm.ExecuteNonQuery();
}
catch(System.Exception E)
{
MessageBox.Show(E.ToString());
}这样或许能看到详细出错说明.
就是在comm.ExecuteNonQuery()时报错,提示信息:未将对象引用设置到对象实例。也没有其他可用的信息了
就差没重装ORACLE和操作系统了
odr=comm.ExecuteReader
conn.Close();
这样试一试
它适合一些insert/update之类可执行语句,返回值
>0 表示更新成功并影响到数据库的变化
=0 表示正确执行,但没更新到数据
<0 更新失败
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();
comm.ExecuteNonQuery();
换做别的,比如OleDbDataReader....ExecuteNonQuery一般是对于插入,或者更新时用...查询一般不用这个...
出错的原因是用oledb的连接方式访问Oracle中的数据时,
有些字段的数据格式如Oracle的TIMESTAMP,在OLEDB中无法识别
因此会出错。
如果将OLEDB换成ORACLE自己的提供程序(OracleConnection,OracleCommand),则可以正常访问
有相同问题的朋友可以注意下