string str="Provider=Microsoft.Jet.OleDb.4.0;";
        str += @"Data Source=D:\Kent\Pro\Website\App_Data\user.mdb";
        OleDbConnection obj=new OleDbConnection(str);
        obj.Open();
        string sql;
        sql = "insert into t_user values(select max(id)+1 from t_user,'" + txtname.Text + "','" + txtpwd1.Text + "','" + txtnick.Text + "','" + radiosex.SelectedValue + "','" + txtmail.Text + "')";
        OleDbCommand cmd = new OleDbCommand(sql, obj);
        cmd.ExecuteNonQuery();
        obj.Close();
执行 提示sql语句有语法错误 但是需要怎么改呢

解决方案 »

  1.   

    先在查询分析器中执行一下,
    另外,ACCESS是否支付insert into select这种写法?
    如果支付,
    语句应该是
    insert into t_user id,userid,pw select xxx from ...
      

  2.   

    先把所有要插入的列名写出来,
    如:insert into t_user(col_name1,col_name2,col_name3,...)
    然后,有用到SQL取值的用小括号括起来,
    如:values((select value from table_name),col_value2,col_value3,...)
    最后检查一下值的类型有没有匹配
      

  3.   

    加上小括号后 执行到cmd.ExecuteNonQuery();错误提示:用户代码未处理OleDbException:未指定的错误。此时 sql中的值为:"insert into t_user values((select max(id)+1 from t_user),'','','','男','')"
      

  4.   

    INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
    你写全一点试试
      

  5.   

    字段要保持一致!Access增加的时候最好是要把要增加的列名也加上例如insert into(列名) values('');