本人第一问...............
使用access数据库,执行插入,想返回刚插入数据的ID,代码如下
sqlstr = "insert into class(name,parentID,leverN,path) values(@name,@parentID,@leverN,@path) select scope_identity()";OleDbParameter[] paras ={new OleDbParameter("@name",OleDbType.VarChar),
                         new OleDbParameter("@parentID",OleDbType.Integer),
                         new OleDbParameter("@leverN",OleDbType.Integer),
                         new OleDbParameter("@path",OleDbType.VarChar)};
paras[0].Value = newsclass.Name;
paras[1].Value = newsclass.ParentID;
paras[2].Value = newsclass.LeverN;
paras[3].Value = newsclass.Path;
int id = DataHelp.AccessHelper.ExeSqlWithParaReturnID(sqlstr, paras);//调用方法ExeSqlWithParaReturnID()看下面:
------------------------------------------------------------
 public static int ExeSqlWithParaReturnID(string sqlstr, OleDbParameter[] parms)
        {
            int id = 0;
            using (OleDbConnection conn = new OleDbConnection(myconn))
            {
                OleDbCommand cmd = conn.CreateCommand();
                PrepareCmd(cmd, parms);
                cmd.CommandText = sqlstr;
                conn.Open();
                try
                {
                    id = Convert.ToInt32(cmd.ExecuteScalar());
                }
                catch (OleDbException e) { conn.Close(); throw new Exception(e.Message); }//抛出异常,说 SQL 语句的结束位置缺少分号 (;)。
                finally
                {
                    conn.Close();
                }
            }
            return id;
        }
各位高手,怎么解决啊.....

解决方案 »

  1.   

    跟踪看看你的SQL语句有没有问题啊
      

  2.   

    你在select scope_identity()前加上一个分号;试试
      

  3.   

    lizhizhe2000(武安侯) 
    试过了 ,说 :"在 SQL 语句结尾之后找到字符。"
      

  4.   

    难道是access不支持立即返回刚插入数据的ID???
      

  5.   

    try catch去掉看到底是哪里错
      

  6.   

    to:Cnaspnet(小C~) 
    这句出错
    id = Convert.ToInt32(cmd.ExecuteScalar());
      

  7.   

    在sql server里面就可以的,access就不行
      

  8.   

    你这种SQL的语句我没用过,你把他放到查询分析器里执行下试试
      

  9.   

    你用SQL Server 的查询分析器试试
      

  10.   

    sm9999999()
    在sql server里面就可以的,access就不行
      

  11.   

    看不出哪错了.返回值直接select MAX一个最大值返回来吧。
      

  12.   

    select scope_identity()
    access不支持这个,插入后返回最大值来处理吧
      

  13.   

    改成
    sqlstr = "insert into class(name,parentID,leverN,path) values(@name,@parentID,@leverN,@path); select scope_identity()";
      

  14.   

    ACCESS有很多语句都容易出问题
      

  15.   

    babyrockxray(紫色阴影)
    加;  试过了
      

  16.   

    2条语句分开写吧,Access貌似不支持这种格式
      

  17.   

    select scope_identity()
    access不支持这个,插入后返回最大值来处理吧
      

  18.   

    sqlstr = "insert into class(name,parentID,leverN,path) values(@name,@parentID,@leverN,@path) select scope_identity();";