帮忙看看有什么问题

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


...全文
147 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
一、项目简介 本项目(HF24075 SDFeatureRivertraining)是一套以多路 PWM 多彩 LED 灯光控制为核心的固件方案,基于 PADAUK PMS 系列单片机。方案对蓝、青、粉等多色 LED 进行独立 PWM 调光,实现呼吸、渐变、流水等细腻灯光效果,并支持按键切换与传感器交互。其 PWM 调光结构清晰,是学习单片机 PWM、色彩混合与灯光算法的理想范例。 核心应用场景: 1. 氛围灯 / 流水灯产品开发 2. PWM 调光与色彩混合学习 3. 电子类课程设计 / 毕业设计 4. 灯光艺术与 DIY 项目 适配使用场景:学习练手、毕业设计、课程设计、创业售卖、实操实训,突出实用性与可落地性。 二、硬件核心配置 · 主控芯片:PADAUK(应广科技)PMS 系列 8 位 OTP 单片机 · 外接外设: - 多色 LED 灯组(蓝 / 青 / 粉等多路独立 PWM) - 轻触按键(模式切换) - 传感器(交互触发) · 操控设备: - 机身实体按键操控 三、核心功能介绍 1. 多路独立 PWM 调光:蓝、青、粉等 LED 各自独立占空比控制,实现精准亮度; 2. 呼吸 / 渐变 / 流水效果:通过 PWM 变化曲线营造丰富灯光律动; 3. 按键切换模式:轻触在多种灯效间循环切换; 4. 传感器交互:外部传感信号触发或联动灯光变化; 5. 低功耗设计:闲置进入低功耗,按需唤醒。 6. 参数可配:亮灭周期、渐变速度等可调,便于定制。 四、项目优势与亮点 · 灯光细腻:多路独立 PWM,效果远胜简单开关灯。 · 算法清晰:呼吸 / 渐变实现简洁,易于理解与移植。 · 扩展性强:可轻松增加颜色与模式,适配各类灯饰。 ·

111,129

社区成员

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

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

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