关于插入数据库的操作
- C# code
public static int ExecuteNonQuery(string cmdText, params OdbcParameter[] cmdParams){ try { using (OdbcConnection conn = new OdbcConnection(_connectionString)) { if (conn.State != ConnectionState.Open) conn.Open(); OdbcCommand cmd = new OdbcCommand(cmdText, conn); cmd.CommandType = CommandType.Text; foreach (OdbcParameter parm in cmdParams) { cmd.Parameters.Add(parm); } int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return val; } } catch (OdbcException e) { throw new Exception(e.Message); }}
小弟用上面的方法往oracle数据库插入记录的数据,出现下面的错误:
"ERROR [42000] [Microsoft][ODBC driver for Oracle][Oracle]ORA-00936: 缺少表达式"
cmdText="insert into INTERVEN_REASON(ID,REASON) values (@ID,@REASON)"
参数的赋值和类型都没有问题,怎么会出现这样的问题呢,请各位大哥帮帮小弟,期待...
[解决办法]
这个ID是自加的吧?
[解决办法]
cmdText="insert into INTERVEN_REASON(ID,REASON) values (@ID,@REASON)"
如果是oracle数据库的话,后面的parameters参数不能用“@”,应该用“:”
不知道你的是不是这个问题。
[解决办法]
跟踪看下输出的SQL语句是否正确。
[解决办法]
oracle 数据库的parameters参数不能是@,识别不了。
[解决办法]
恩,你往Oracle数据库中插入数据的话,你应该使用OracleClient命名空间下的OracleConnection、OracleCommand对象的。
[解决办法]
OdbcConnection?.net 2.0开始就提供的OracleConnection哪儿去了?
[解决办法]
用ExecuteScalar试试。
[解决办法]
Oracle的参数的确是“:”,不是“@”。
并非所有变量都已关联,可能是你传过来的参数cmdParams有问题,可能不是ID,REASON这两个,你跟断点看看传过来的cmdParams是什么东西。参数名药对应上。
[解决办法]
Oracle的参数的确是“:”,不是“@”。
[解决办法]
mark
[解决办法]
是不是参数为值为空?