!!!!急急急,关键字段类型为ACCESS自动增长,如何插入数据并返回该关键字段的值? 我是用C#来编写的,调试时总是提示insert into语句错误。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 insert into 的时候不对关键字段赋值,然后再写个SELECT语句就能得到你想要的了 其实很简单,access自增加的字段,其max(id)为最后增加的一个.如果你不考虑在你insert into table时,此瞬间又有其它用户插入了记录, 那么max(id)就是返回的值.而且考虑到你用的access,应该不会有多用户操作 insert into 的时候不对关键字段赋值 以上几位始终没有解决问题。自己后来看MSDN懂了,insert语句不要加入ID字段,返回自动生成ID要用到RowUpdated事件.public void uporder(Object src, System.Web.UI.WebControls.CommandEventArgs e){ int subi=0; recalculate(); DateTime odate=System.DateTime.Now; string strdate=odate.Date.ToString("yyyy-MM-dd"); string uid=Session["userid"].ToString(); string ststxt="待接受"; OleDbDataAdapter catDA = new OleDbDataAdapter("SELECT * from jorder ", MyConn); catDA.InsertCommand = new OleDbCommand("INSERT INTO jorder(sts,userid,mqty,odate,memtxt) Values(@sts,@userid,@mqty,@odate,@memtxt)", MyConn); catDA.InsertCommand.CommandType = CommandType.Text; catDA.InsertCommand.Parameters.Add("@sts", OleDbType.Char, 5, "sts"); catDA.InsertCommand.Parameters.Add("@userid", OleDbType.Char, 10, "userid"); catDA.InsertCommand.Parameters.Add("@mqty", OleDbType.Integer, 5, "mqty"); catDA.InsertCommand.Parameters.Add("@odate", OleDbType.Date, 8, "odate"); catDA.InsertCommand.Parameters.Add("@memtxt", OleDbType.Char, 255, "memtxt"); catDA.RowUpdated += new OleDbRowUpdatedEventHandler(OnRowUpdated); DataSet catDS = new DataSet(); catDA.Fill(catDS,"jorder"); DataRow newRow = catDS.Tables["jorder"].NewRow(); newRow["sts"] = ststxt; newRow["userid"] = uid; newRow["mqty"] = total; newRow["odate"] = odate.Date; newRow["memtxt"] = memtxt.Text; catDS.Tables["jorder"].Rows.Add(newRow); catDA.Update(catDS, "jorder"); foreach(DataRow myRow in dt.Rows){ myRow["oid"]= orderid; } string strSel = "select * from olist"; OleDbDataAdapter MyAdapter = new OleDbDataAdapter(strSel,MyConn); OleDbCommandBuilder custCB = new OleDbCommandBuilder(MyAdapter); DataSet ds = new DataSet(); MyAdapter.Fill(ds,"olist"); foreach(DataRow myRow in dt.Rows){ ds.Tables["olist"].ImportRow(dt.Rows[subi]); subi++; } subi=0; subi=MyAdapter.Update(ds,"olist"); if(subi>0){ dt.Clear(); ArrayList addsum = new ArrayList(); Session["addlist"]=addsum; submsg.Text="您的订单已成功提交,谢谢您的支持!"; dgd.Visible=false; } } 如何转换unix时间戳? 项目管理,看看你对熟悉多少,能不能胜任项目经理? 请问如何给SqlDbType.DateTime赋空值啊 关于在treeView中添加节点的问题 求C#入门教程。。。初识C#。。。。忘指点··· 关于 FreeTextBox (急!) 关于编写代理服务器的问题 初学C#一段代码请大家指点,小弟先谢过了! 关于Update的问题,TheAres(班门斧)请进! dataset表中增加一列? C#.NET2005中如何使控件透明?? c#中有没有对应的方法替代c++中的memcpy?如果没有,谁能给出实现代码?
如果你不考虑在你insert into table时,此瞬间又有其它用户插入了记录, 那么max(id)就是返回的值.
而且考虑到你用的access,应该不会有多用户操作
自己后来看MSDN懂了,insert语句不要加入ID字段,返回自动生成ID要用到RowUpdated事件.
public void uporder(Object src, System.Web.UI.WebControls.CommandEventArgs e){
int subi=0;
recalculate();
DateTime odate=System.DateTime.Now;
string strdate=odate.Date.ToString("yyyy-MM-dd");
string uid=Session["userid"].ToString();
string ststxt="待接受";
OleDbDataAdapter catDA = new OleDbDataAdapter("SELECT * from jorder ", MyConn);
catDA.InsertCommand = new OleDbCommand("INSERT INTO jorder(sts,userid,mqty,odate,memtxt) Values(@sts,@userid,@mqty,@odate,@memtxt)", MyConn);
catDA.InsertCommand.CommandType = CommandType.Text;
catDA.InsertCommand.Parameters.Add("@sts", OleDbType.Char, 5, "sts");
catDA.InsertCommand.Parameters.Add("@userid", OleDbType.Char, 10, "userid");
catDA.InsertCommand.Parameters.Add("@mqty", OleDbType.Integer, 5, "mqty");
catDA.InsertCommand.Parameters.Add("@odate", OleDbType.Date, 8, "odate");
catDA.InsertCommand.Parameters.Add("@memtxt", OleDbType.Char, 255, "memtxt");
catDA.RowUpdated += new OleDbRowUpdatedEventHandler(OnRowUpdated);
DataSet catDS = new DataSet();
catDA.Fill(catDS,"jorder");
DataRow newRow = catDS.Tables["jorder"].NewRow();
newRow["sts"] = ststxt;
newRow["userid"] = uid;
newRow["mqty"] = total;
newRow["odate"] = odate.Date;
newRow["memtxt"] = memtxt.Text;
catDS.Tables["jorder"].Rows.Add(newRow);
catDA.Update(catDS, "jorder");
foreach(DataRow myRow in dt.Rows){
myRow["oid"]= orderid;
}
string strSel = "select * from olist";
OleDbDataAdapter MyAdapter = new OleDbDataAdapter(strSel,MyConn);
OleDbCommandBuilder custCB = new OleDbCommandBuilder(MyAdapter);
DataSet ds = new DataSet();
MyAdapter.Fill(ds,"olist");
foreach(DataRow myRow in dt.Rows){
ds.Tables["olist"].ImportRow(dt.Rows[subi]);
subi++;
}
subi=0;
subi=MyAdapter.Update(ds,"olist");
if(subi>0){
dt.Clear();
ArrayList addsum = new ArrayList();
Session["addlist"]=addsum;
submsg.Text="您的订单已成功提交,谢谢您的支持!";
dgd.Visible=false;
}
}