用oracleCommand执行SQL
在.net里有如下一段代码OracleConnectionoraCon=null;OracleCommandoraCmd=null;OracleDataReaderora...
在.net里有如下一段代码
OracleConnection oraCon = null;
OracleCommand oraCmd = null;
OracleDataReader oraRdr = null;
oraCon = new OracleConnection("data source=test;user id=test;password=test");
oraCmd = new OracleCommand("select * from tb where id=:id", oraCon);
oraCmd.BindByName = true;
oraCmd.Parameters.Add("id", OracleDbType.NVarchar2, 20, "001", ParameterDirection.Input);
oraCon.Open();
oraRdr = oraCmd.ExecuteReader();
就执行到ExecuteReader这时,报
System.NullReferenceException: 未将对象引用设置到对象的实例
的错误
可是oraCmd明明实例化了啊
为什么啊 展开
OracleConnection oraCon = null;
OracleCommand oraCmd = null;
OracleDataReader oraRdr = null;
oraCon = new OracleConnection("data source=test;user id=test;password=test");
oraCmd = new OracleCommand("select * from tb where id=:id", oraCon);
oraCmd.BindByName = true;
oraCmd.Parameters.Add("id", OracleDbType.NVarchar2, 20, "001", ParameterDirection.Input);
oraCon.Open();
oraRdr = oraCmd.ExecuteReader();
就执行到ExecuteReader这时,报
System.NullReferenceException: 未将对象引用设置到对象的实例
的错误
可是oraCmd明明实例化了啊
为什么啊 展开
2个回答
展开全部
你的代码很奇怪,哪来的BindByName?还有那个oraCmd.Parameters.Add,根本没有这个方法重载
后来查了一下,发现你用的是ODP.net
我没用过这个
你用的是System.Data.OracleClient命名空间下的类吗?
我按着你的写法写了一遍,我机器上测试通过:
首先
using System.Data.OracleClient;
OracleConnection oraCon = null;
OracleCommand oraCmd = null;
OracleDataReader oraRdr = null;
oraCon = new OracleConnection("data source=test;user id=test;password=test");
oraCmd = new OracleCommand("select * from tb where id=:id", oraCon);
OracleParameter oraPara = new OracleParameter("id", OracleType.NVarChar);
oraPara.Direction = ParameterDirection.Input;
oraPara.Value = "001";
oraCmd.Parameters.Add(oraPara);
oraCon.Open();
oraRdr = oraCmd.ExecuteReader(CommandBehavior.CloseConnection);
oraRdr.Read();
Response.Write(oraRdr[0].ToString());
oraRdr.Close();
后来查了一下,发现你用的是ODP.net
我没用过这个
你用的是System.Data.OracleClient命名空间下的类吗?
我按着你的写法写了一遍,我机器上测试通过:
首先
using System.Data.OracleClient;
OracleConnection oraCon = null;
OracleCommand oraCmd = null;
OracleDataReader oraRdr = null;
oraCon = new OracleConnection("data source=test;user id=test;password=test");
oraCmd = new OracleCommand("select * from tb where id=:id", oraCon);
OracleParameter oraPara = new OracleParameter("id", OracleType.NVarChar);
oraPara.Direction = ParameterDirection.Input;
oraPara.Value = "001";
oraCmd.Parameters.Add(oraPara);
oraCon.Open();
oraRdr = oraCmd.ExecuteReader(CommandBehavior.CloseConnection);
oraRdr.Read();
Response.Write(oraRdr[0].ToString());
oraRdr.Close();
展开全部
OracleConnection oraCon = null;
OracleCommand oraCmd = null;
oraCon = new OracleConnection("Data Source=his2;User ID=scott;Password=tiger;Unicode=True");
oraCmd = new OracleCommand("select ename,sal from emp where empno=&empno", oraCon);
oraCmd.Parameters.Add("empno", OracleType.VarChar, 10, "empno").Value="7788";
oraCon.Open();
OracleDataReader oraRdr = oraCmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
while (oraRdr.Read())
{
Console.WriteLine("\t{0}\t{1}", oraRdr.GetString(0), oraRdr.GetInt32(1));
}
oraRdr.Close();
因为懒得建一张表去做测试,就用了oracle的初始emp表,你可以自己对照一下.
额对,补充一下,我看到你说用oraclecommand就没有向楼上那样去查到底是什么,认为就是System.Data.OracleClient这个命名空间下的东西了.
上面的编码要能用需要添加这个引用
其次如果scott被锁了要用sysdba打开...
命令:alter user scott account unlock;
OracleCommand oraCmd = null;
oraCon = new OracleConnection("Data Source=his2;User ID=scott;Password=tiger;Unicode=True");
oraCmd = new OracleCommand("select ename,sal from emp where empno=&empno", oraCon);
oraCmd.Parameters.Add("empno", OracleType.VarChar, 10, "empno").Value="7788";
oraCon.Open();
OracleDataReader oraRdr = oraCmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
while (oraRdr.Read())
{
Console.WriteLine("\t{0}\t{1}", oraRdr.GetString(0), oraRdr.GetInt32(1));
}
oraRdr.Close();
因为懒得建一张表去做测试,就用了oracle的初始emp表,你可以自己对照一下.
额对,补充一下,我看到你说用oraclecommand就没有向楼上那样去查到底是什么,认为就是System.Data.OracleClient这个命名空间下的东西了.
上面的编码要能用需要添加这个引用
其次如果scott被锁了要用sysdba打开...
命令:alter user scott account unlock;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询