初学者问sql语句中@变量名赋值的问题。

billtzh 2003-10-15 12:41:13
程序如下。但是运行后说Exception Details: System.Data.OracleClient.OracleException: ORA-01036: 非法的变量名/编号

我认为是SQL语句中的@变量并没有换掉。可是错在哪里呢?都是很简单的语句呀。

{如果SQL为string CommandText = "select * from tzhtable";即不用参数程序就对的。}

private void Button2_Click(object sender, System.EventArgs e)
{
string ConnectionString = "user id=tzh;data source=\"db01.centralsoft\";password=tzh";
string CommandText = "select * from tzhtable where age<@age";

OracleConnection myConnection = new OracleConnection(ConnectionString);
myConnection.Open();
OracleCommand myCommand = new OracleCommand (CommandText, myConnection);
myCommand.Parameters.Add("@age",OracleType.Int16).Value=13;

OracleDataReader myreader=myCommand.ExecuteReader(CommandBehavior.CloseConnection);
DataGrid2.DataSource=myreader;
DataGrid2.DataBind ();
}
...全文
78 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tongzhenhua 2003-10-15
  • 打赏
  • 举报
回复
在Oracle中是用:变量名不是用@变量名
呵呵。enjoy
billtzh 2003-10-15
  • 打赏
  • 举报
回复
To cmsoft(韦小宝是我的老乡)(.net&java):

我换成了string CommandText = "select * from tzhtable where age<@myage";
myCommand.Parameters.Add("@myage",OracleType.Int16).Value=13;
还是不行。


TO hillseok(山海经)
我按你的改成
string CommandText = "select * from tzhtable where age<@myage";
OracleConnection myConnection = new OracleConnection(ConnectionString);
myConnection.Open();
OracleCommand myCommand = new OracleCommand (CommandText, myConnection);
myCommand.Parameters.Add("@myage",OracleType.Int16);
myCommand.Parameters["@myage"].Value=13;
OracleDataReader myreader=myCommand.ExecuteReader(CommandBehavior.CloseConnection);

还是不行。出同样的错

ORA-01036: 非法的变量名/编号
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.OracleClient.OracleException: ORA-01036: 非法的变量名/编号

Source Error:


Line 125:myCommand.Parameters.Add("@myage",OracleType.Int16).Value=13;
Line 126:
Line 127: OracleDataReader myreader=myCommand.ExecuteReader(CommandBehavior.CloseConnection);
Line 128: DataGrid2.DataSource=myreader;
Line 129: DataGrid2.DataBind ();

hillseok 2003-10-15
  • 打赏
  • 举报
回复
在myCommand.Parameters.Add("@age",OracleType.Int16.Value=13);后加上
myCommand.Parameters["@age"].value=参数值;
cmsoft 2003-10-15
  • 打赏
  • 举报
回复
@age这个参数名换掉,比如换成@myage,参数名不要与字段名相同
ahui_net 2003-10-15
  • 打赏
  • 举报
回复
就一个参数就
int nNumber = 13;
string CommandText = "select * from tzhtable where age < "+ nNumber;

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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