这是我的插入方法 参数的值都能得的到
 public bool AddContact( Contact contact, OracleConnection conn )
        {
            bool isLog = false;
            string sql =
                "INSERT Contact (CONNAME, CONSEX, CONEMAIL, CONPHONE, COMID, CONADDRESS, CONPOST, CONJOB, CONTEL, CNOFAX)" +
                "VALUES (@CNAME, @CSEX, @CEMAIL, @CPHONE, @COMID, @CADDRESS, @CPOST, @CJOB, @CTEL, @CFAX)";            try
            {
                OracleParameter[ ] para = new OracleParameter[ ]
{
new OracleParameter("@CNAME", contact.ConName),
new OracleParameter("@CSEX", contact.ConSex),
new OracleParameter("@CEMAIL", contact.ConEmail),
new OracleParameter("@CPHONE", contact.ConPhone),
new OracleParameter("@COMID", contact.Company.ComId),
new OracleParameter("@CADDRESS", contact.ConAddress),
new OracleParameter("@CPOST", contact.ConPost),
new OracleParameter("@CJOB", contact.ConJob),
new OracleParameter("@CTEL", contact.ConTel),
new OracleParameter("@CFAX", contact.ConFax)
};                int newId = MyCommon.ExecuteSql( sql, conn, para );
                if( newId>=1 )
                {
                      isLog = true;
                }
            
            }
            catch( Exception e )
            {
                Console.WriteLine( e.Message );
                throw e;
            }
            return isLog;
        }
 public static int ExecuteSql( string SQLString, OracleConnection connection, params OracleParameter[ ] cmdParms )
    {        using( OracleCommand cmd = new OracleCommand( ) )
        {
            try
            {
                PrepareCommand( cmd, connection, null, SQLString, cmdParms );
                int rows = cmd.ExecuteNonQuery( );-------------------到这里就是报错:ORA-01036: illegal variable name/number  请问这是什么错呢 改怎么改呢?
                cmd.Parameters.Clear( );
                return rows;
            }
            catch( System.Data.OracleClient.OracleException E )
            {
                throw new Exception( E.Message );
            }
        }    }

解决方案 »

  1.   

    不好意思 oracle里面没有@ 但是我把@换成:也还是报相同的错!
      

  2.   


    new OracleParameter(@"CNAME", contact.ConName),把@拿出来
      

  3.   

    做程序员要细心...INSERT Contact (CONNAME, CONSEX
      

  4.   

    ORA-01036错一般都是SQL拼写不正确...
      

  5.   

    Oracle 没有@吧
    values这里 VALUES (@CNAME, @CSEX, @CEMAIL, @CPHONE, @COMID, @CADDRESS, @CPOST, @CJOB, @CTEL, @CFAX)" 的@ -> :参数这里OracleParameter("@CNAME", contact.ConName) 不要 @