日期:2014-05-18  浏览次数:21108 次

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