关于插入数据库的操作
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
------解决方案--------------------是不是参数为值为空?