ORA-00936: 缺失表达式
public static int AddUsers(Users user)
        {
            int n = 0;
            try
            {
                string sql = "insert into users values(id_seq.nextval,'@name',@age,'@sex');";
                OracleParameter name = new OracleParameter("@name",user.Name);
                OracleParameter age = new OracleParameter("@age", user.Age);
                OracleParameter sex = new OracleParameter("@sex",user.Sex);                OracleCommand command = command = new OracleCommand(sql, DBHelper.connection);
                command.Parameters.Add(name);
                command.Parameters.Add(age);
                command.Parameters.Add(sex);                DBHelper.connection.Open();
                Console.WriteLine(sql);
                n = command.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
            finally
            {
                DBHelper.connection.Close();
            }
            return n;
        }
    其中,name、age、sex的值都取到了,在执行添加的时候报错了

解决方案 »

  1.   

      string sql = "insert into users values(id_seq.nextval,'@name',@age,'@sex');";
    string sql = "insert into users values(id_seq.nextval,@name,@age,@sex);";
      

  2.   

    string sql = "insert into users values(id_seq.nextval,'@name',@age,'@sex');";双引号前的分号不要试试
      

  3.   

    不是吧 Oracle 不加双引号 会执行么?
      

  4.   


    你们说的我都尝试了,还是报错。。
       那个该死的客户,非要用Oracle 不用SqlServer。害死我了  
      

  5.   


    string sql = "insert into users values(id_seq.nextval,:name,:age,:sex)";
    学习下基础,Oracle很好。
      

  6.   


    string sql = "insert into users (ID,NAME,AGE,SEX) values (id_seq.nextval,:NAME,:AGE,:SEX)";
      

  7.   


    public static int AddUsers(Users user)
            {
                int n = 0;
                try
                {
                    string sql = "insert into users (ID,NAME,AGE,SEX) values (id_seq.nextval,:NAME,:AGE,:SEX)";             OracleParameter[] parameters ={ 
                                               new OracleParameter("NAME", user.Name),
                                               new OracleParameter("AGE", user.Age),
                               new OracleParameter("SEX", user.Sex)                                          
                                               };                DBHelper.connection.Open();
                    //Console.WriteLine(sql);
                    n = command.ExecuteNonQuery(sql,CommandType.Text, 你的链接字符串, parameters);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.ToString());
                }
                finally
                {
                    DBHelper.connection.Close();
                }
                return n;
            }
    具体如何连接数据库什么的,自己找资料。
      

  8.   


    OracleParameter[] parameters ={ 
                                               new OracleParameter("NAME", user.Name),
                                               new OracleParameter("AGE", user.Age),
                                       new OracleParameter("SEX", user.Sex)                                          
                                               };
    用Oracle,不能用数组。因为没有AddRange()方法
    第一次用C#连接Oracle,遇到了很多问题,谢谢各位大手了  
      

  9.   


    是谁告诉你不能用的?
    去找个OracleHelper来看看先吧,另外这样如果参数多了,要写的重复代码太多,可以写一个公共的方法来弄。
      

  10.   


    嗯,对Oracle要多学习一下   不能光靠着SqlServer 嘿嘿
      

  11.   

    追加一个问题
     OdbcParameter[] para = { 
    不是OracleParameter[] 
    那怎么写?