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

最近写程序时,往Oracle中插入数据,出现错误ORA-01036:非法的变量名/编号,代码如下:

DbConnection conn = GetCon(); conn.Open(); DbCommand cmd = conn.CreateCommand(); string sqlrt= "insert into T_User(Id,Name,Password,E_Mail) VALUES(@id,@name,@password,@email)";

cmd.CommandText = sqlrt; cmd.Parameters.Add(new SqlParameter("@id", Convert.ToInt32(txtId.Text))); cmd.Parameters.Add(new SqlParameter("@name", txtName.Text)); cmd.Parameters.Add(new SqlParameter("@password", txtPassword.Text)); cmd.Parameters.Add(new SqlParameter("@email", txtEmail.Text)); int num = cmd.ExecuteNonQuery(); if (num > 0) { Response.Write("插入成功"); DataLoad(); }

解决方案是:

DbConnection conn = GetCon(); conn.Open(); DbCommand cmd = conn.CreateCommand(); string sqlrt= "insert into T_User(Id,Name,Password,E_Mail) VALUES(:id,:name,:password,:email)";

cmd.Parameters.Add(new OracleParameter(":id", Convert.ToInt32(txtId.Text))); cmd.Parameters.Add(new OracleParameter(":name", txtName.Text)); cmd.Parameters.Add(new OracleParameter(":password", txtPassword.Text)); cmd.Parameters.Add(new OracleParameter(":email", txtEmail.Text));

在Oracle数据库中,参数替换不能使用"@",要使用":",将程序中的@替换成就可以解决这个问题了
经验分享 程序员 微信小程序 职场和发展