处女问题
本人第一问...............
使用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;
}
各位高手,怎么解决啊.....
[解决办法]
跟踪看看你的SQL语句有没有问题啊
[解决办法]
你在select scope_identity()前加上一个分号;试试
[解决办法]
try catch去掉看到底是哪里错
[解决办法]
你这种SQL的语句我没用过,你把他放到查询分析器里执行下试试
[解决办法]
你用SQL Server 的查询分析器试试
[解决办法]
看不出哪错了.返回值直接select MAX一个最大值返回来吧。
[解决办法]
select scope_identity()
access不支持这个,插入后返回最大值来处理吧
[解决办法]
两条sql语句中以;隔开
[解决办法]
ACCESS有很多语句都容易出问题
[解决办法]
我还以为里面真有敏感的处女问题呢。
[解决办法]
2条语句分开写吧,Access貌似不支持这种格式
[解决办法]
select scope_identity()
access不支持这个,插入后返回最大值来处理吧