帮忙看看有什么问题

marhment 2008-07-17 11:33:57
帮忙看看有什么问题


OracleConnection conn = new OracleConnection(constr);

OracleCommand com = conn.CreateCommand();
string sql = "select * from test where C_LOGID=:uid";
com.CommandText = sql;
OracleParameter p = new OracleParameter("uid", OracleType.VarChar, 10);
p.Value = "sa";
com.Parameters.Add(p);
conn.Open();
OracleDataReader dr = com.ExecuteReader();
while (dr.Read())
{
MessageBox.Show(dr[0].ToString());
}



为什么一执行就是异常呢?
异常如下:
ORA-01745: 无效的主机/赋值变量名

在 System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc)
在 System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, Boolean needRowid, OciRowidDescriptor& rowidDescriptor, ArrayList& resultParameterOrdinals)
在 System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, ArrayList& resultParameterOrdinals)
在 System.Data.OracleClient.OracleCommand.ExecuteReader(CommandBehavior behavior)
在 System.Data.OracleClient.OracleCommand.ExecuteReader()
在 WindowsApplication1.Form1.ss() 位置 E:WindowsApplication1WindowsApplication1Form1.cs:行号 90


...全文
118 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
安宁 2008-07-17
  • 打赏
  • 举报
回复
OracleParameter p = new OracleParameter(":uid", "sa");
marhment 2008-07-17
  • 打赏
  • 举报
回复
不行,依旧是异常
OracleParameter p = new OracleParameter(":uid", OracleType.VarChar, 10);
也是不行
ORA-01745: 无效的主机/赋值变量名

在 System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc)
在 System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, Boolean needRowid, OciRowidDescriptor& rowidDescriptor, ArrayList& resultParameterOrdinals)
在 System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, ArrayList& resultParameterOrdinals)
在 System.Data.OracleClient.OracleCommand.ExecuteReader(CommandBehavior behavior)
在 System.Data.OracleClient.OracleCommand.ExecuteReader()
在 WindowsApplication1.Form1.ss() 位置 E:\WindowsApplication1\WindowsApplication1\Form1.cs:行号 90
GhostAdai 2008-07-17
  • 打赏
  • 举报
回复
加@是MSSQL的变量,楼主用的是Oracle,所以是这一句错了:
OracleParameter p = new OracleParameter("uid", OracleType.VarChar, 10);
应该改为:
OracleParameter p = new OracleParameter(":uid", OracleType.VarChar, 10);
注意红色部分的冒号。
marhment 2008-07-17
  • 打赏
  • 举报
回复
不行啊
异常

ORA-01036: 非法的变量名/编号

在 System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc)
在 System.Data.OracleClient.OracleParameterBinding.Bind(OciStatementHandle statementHandle, NativeBuffer parameterBuffer, OracleConnection connection, Boolean& mustRelease, SafeHandle& handleToBind)
在 System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, Boolean needRowid, OciRowidDescriptor& rowidDescriptor, ArrayList& resultParameterOrdinals)
在 System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, ArrayList& resultParameterOrdinals)
在 System.Data.OracleClient.OracleCommand.ExecuteReader(CommandBehavior behavior)
在 System.Data.OracleClient.OracleCommand.ExecuteReader()
在 WindowsApplication1.Form1.ss() 位置 E:\WindowsApplication1\WindowsApplication1\Form1.cs:行号 90
panw520 2008-07-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zzyhuian06142 的回复:]
string sql = "select * from test where C_LOGID=:uid";
改成
string sql = "select * from test where C_LOGID=@uid";
OracleParameter p = new OracleParameter("@uid", OracleType.VarChar, 10);

[/Quote]
同意
zzyhuian06142 2008-07-17
  • 打赏
  • 举报
回复
string sql = "select * from test where C_LOGID=:uid";
改成
string sql = "select * from test where C_LOGID=@uid";
OracleParameter p = new OracleParameter("@uid", OracleType.VarChar, 10);
marhment 2008-07-17
  • 打赏
  • 举报
回复
没人回答啊
marhment 2008-07-17
  • 打赏
  • 举报
回复
对,在没有参数的时候执行正常
加上参数就异常
我姓区不姓区 2008-07-17
  • 打赏
  • 举报
回复
连接字符串对吗
cwb210 2008-07-17
  • 打赏
  • 举报
回复
此人不公道,忽视别人的劳动成果,特发此证!
GhostAdai 2008-07-17
  • 打赏
  • 举报
回复
哇,这样也行,换个变量名字就20分全给了,没那个冒号行吗?这是不是倒分的啊!
GritH2O 2008-07-17
  • 打赏
  • 举报
回复
变量命uid不合法换一个 如userid

110,010

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧