实现功能是:在发帖的同时上传图像,并把发的当前帖子的ID(表Topci,主键是ID,自增字段)同时插入到表Img的Topic中,怎么样才能获取Topic表的主键ID?
我现在的插入语句是: "insert into Img(Image_Wpath,Imge_User,Topic_ID,UpLoad_Time) values(" + "'" + wpath + "'" + "," + "'" + Session["UserName"].ToString() + "'" + "," + "'" + ImgID.ToString() + "'" + "," + "'" + DateTime.Now.ToString() + "'" + ");";
应该怎样修改?用的是VS2008,SQL2005。
有人说用select identity()直接写在insert语句后,请问我应该怎么写?能不能帮我修改一下?
我现在的插入语句是: "insert into Img(Image_Wpath,Imge_User,Topic_ID,UpLoad_Time) values(" + "'" + wpath + "'" + "," + "'" + Session["UserName"].ToString() + "'" + "," + "'" + ImgID.ToString() + "'" + "," + "'" + DateTime.Now.ToString() + "'" + ");";
应该怎样修改?用的是VS2008,SQL2005。
有人说用select identity()直接写在insert语句后,请问我应该怎么写?能不能帮我修改一下?
insert into Topic ... value(...);select @@identity
这两句要一次传到数据库执行。
可以在插入后取到最后的那个标识列的值。
insert into Img(Image_Wpath,Imge_User,Topic_ID,UpLoad_Time) values(" + "'" + wpath + "'" + "," + "'" + Session["UserName"].ToString() + "'" + "," + "'" + CONVERT(INT,IDENT_CURRENT('Topci')) + "'" + "," + "'" + DateTime.Now.ToString() + "'" + ")
CONVERT(INT,IDENT_CURRENT('Topci'))
主要是上面的这个函数
然后做为参数插入进去至于自增字段 数据库里设置自动增长 插入的时候不需要管他
论坛签名======================================================================
当您的问题得到解答后请及时结贴.
http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
http://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.html
http://topic.csdn.net/u/20100626/09/f35a4763-4b59-49c3-8061-d48fdbc29561.html如何给分和结贴?
http://community.csdn.net/Help/HelpCenter.htm#结帖如何给自己的回帖中也加上签名?
http://blog.csdn.net/q107770540/archive/2011/03/15/6250007.aspx
private bool StoreUserInfo(string title, string contents)//先把帖子写进去
if (!(String.IsNullOrEmpty(Topic_Title) && String.IsNullOrEmpty(Topic_Content)))
{
StoreUserInfo(Topic_Title, Topic_Content);//这里加了保存图片的代码
string UpLoad_img = "insert into Img(Image_Wpath,Imge_User,UpLoad_Time) values(" + "'" + wpath + "'" + "," + "'" + Session["UserName"].ToString() + "'" + "," + "'" + DateTime.Now.ToString() + "'" + ");";
SqlCommand cmdImg = new SqlCommand(UpLoad_img, con_img);
con_img.Open();
if (type == "jpg" || type == "gif" || type == "bmp" || type == "png")
{
FileUpload_Img.SaveAs(path); //服务器保存路径
cmdImg.ExecuteNonQuery();
}
}
那个原来的sql语句是我之前发的那个:
"insert into Img(Image_Wpath,Imge_User,Topic_ID,UpLoad_Time) values(" + "'" + wpath + "'" + "," + "'" + Session["UserName"].ToString() + "'" + "," + "'" + ImgID.ToString() + "'" + "," + "'" + DateTime.Now.ToString() + "'" + ");";
//插入代码你自己补全
String sql="insert into topic values(); select @@identity;";//用SqlCommand的EexecuteScalar()执行
int pid=(int)cmd.ExecuteScalar(sql);
//插入图片,pid中就是你要的主键了
String sql2="insert ... values (... "+pid+",...)";
错误 1 “ExecuteScalar”方法没有采用“1”个参数的重载
sql是在建立Command时传入。
ExecuteScalar();就不要传了。
然后我加了一句:Convert.ToInt32(Tcmd.ExecuteScalar());也不行。为什么?
那么你的id要设置为标识列才行
values('{0}','{1}','{2}',getdate());
insert into 表名(列名1,列名2,列名3)
values(@@identity,@@identity,@@identity);",
wpath,
Session["UserName"].ToString(),
ImgID.ToString());