目前我正在通过以下方式使用sqldatasource从codebehind插入数据库。
SqlDataSource13.InsertParameters["name"].DefaultValue = ufn;
SqlDataSource13.InsertParameters["mime_type"].DefaultValue = FileUpload1.PostedFile.ContentType;
SqlDataSource13.InsertParameters["size"].DefaultValue = FileUpload1.PostedFile.ContentLength.ToString();
SqlDataSource13.InsertParameters["extension"].DefaultValue = "";
SqlDataSource13.InsertParameters["date"].DefaultValue = dt.ToShortDateString();
SqlDataSource13.InsertParameters["type"].DefaultValue = ddlDocType.SelectedValue;
SqlDataSource13.InsertParameters["description"].DefaultValue = tbDescription.Text;
SqlDataSource13.Insert();
这很好用。但是我现在需要获取插入ID。我将select scope_identity添加到插入查询的末尾。以及带有direction = ouput的插入参数的参数。
SELECT @id = SCOPE_IDENTITY()
<asp:Parameter Name="id" Direction="Output" />
但是我需要弄清楚如何使用上面的设置来获取输出参数。
答案 0 :(得分:0)
试试这个:
protected void SqlDataSource13_Inserted(object sender, SqlDataSourceStatusEventArgs e)
{
string sID = e.Command.Parameters["@Identity"].Value.ToString();
}
取自here(不是C#,但想法就在那里)
答案 1 :(得分:0)
为了让自己更轻松,我切换到了linq to sql查询。
tableDataContext tdc = new tableDataContext();
doc d = new doc();
d.dpi = qs;
d.dn = ufn;
etc...
tdc.docs.InsertOnSubmit(d);
tdc.SubmitChanges();
// get current row insert id
int dID = d.id;
所以现在我已经使用了最近插入的doc id。 容易。
感谢无论谁写了这个example