![](/img/trans.png)
[英]Microsoft SQL Server, selecting an id and inserting into another table
[英]Retrieving ID from SQL Server 2008 table to asp.net site and then inserting the ID into another table
我有这个代码:
上传页面的.cs文件的一部分:
protected void Page_Load(object sender, EventArgs e)
{
BtnImport1.Visible = false;
Cancel.Visible = false;
}
private string ErrorMessage(string input)
{
if (!string.IsNullOrEmpty(input))
return input;
BtnImport1.Visible = false;
return "No value entered!";
}
protected void btnUpload_Click(object sender, EventArgs e)
{
string strFileNameOnServer = fileUpload.PostedFile.FileName;
string fileExt =
System.IO.Path.GetExtension(fileUpload.FileName);
if (fileUpload.PostedFile != null && fileExt == ".csv")
{
try
{
fileUpload.PostedFile.SaveAs(Server.MapPath("~/uploads"));
Label1.Text = "File name: " +
fileUpload.PostedFile.FileName + "<br>" +
fileUpload.PostedFile.ContentLength + " kb<br>" +
"Content type: " +
fileUpload.PostedFile.ContentType;
}
catch (Exception ex)
{
Label1.Text = "Error saving <b>" + strFileNameOnServer + "</b><br>. " + ex.Message;
}
BtnImport1.Visible = true;
Cancel.Visible = true;
fileUpload.Visible = false;
btnUpload.Visible = false;
}
else
{
Label1.Text = "Error - a file name must be specified/only csv files are allowed";
return;
}
}
protected void BtnImport1_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(@"Data Source=localhost\SQLEXPRESS;Initial Catalog=PSeminar;Integrated Security=true;Trusted_Connection=Yes;MultipleActiveResultSets=true");
StreamReader Sr = new StreamReader(Server.MapPath("~/uploads"));
string line;
while ((line = Sr.ReadLine()) != null)
{
String[] tokens = line.Split(',');
const string SQL = "INSERT INTO Attendance ([GuestID], [IC_No], [Grouping], [Remarks], [GuestName], [Class_Group], [Staff], [Attendance_Parents_Only], [Registration], [Event_ID] ) VALUES (@GuestID, @IC_No, @Grouping, @Remarks, @GuestName, @Class_Group, @Staff, @Attendance_Parents_Only, @Registration, @Event_ID)";
SqlCommand cmd = new SqlCommand(SQL, con);
cmd.Parameters.AddWithValue("@GuestID", tokens[0]);
cmd.Parameters.AddWithValue("@IC_No", tokens[1]);
cmd.Parameters.AddWithValue("@Grouping", tokens[2]);
cmd.Parameters.AddWithValue("@Remarks", tokens[3]);
cmd.Parameters.AddWithValue("@GuestName", tokens[4]);
cmd.Parameters.AddWithValue("@Class_Group", tokens[5]);
cmd.Parameters.AddWithValue("@Staff", tokens[6]);
cmd.Parameters.AddWithValue("@Attendance_Parents_Only", tokens[7]);
cmd.Parameters.AddWithValue("@Registration", tokens[8]);
cmd.Parameters.AddWithValue("@EventID", tokens[9]);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
Response.Redirect("Main.aspx");
}
所以我想从SQL Server 2008表中获取名为Event
的EventID
,然后将其插入到另一个名为Attendance
表中,如BtnImport1_Click
。 表中有EventID
和EventName
列,称为Event
。 我在另一个.cs页面中查询了ListBox中的EventName
字符串。 查询字符串存储EventName
:
protected void up_Click(object sender, EventArgs e)
{
foreach (ListItem li in ListBox1.Items)
{
//if the item is selected in the listboxs
if (li.Selected)
{
Response.Redirect("Upload.aspx?ename=" + this.ListBox1.SelectedItem);
}
}
现在,我不知道如何搭配存储的EventName
与EventID
,并插入EventID
到Event
表中,与其他信息一起BtnImport1_Click
。
请帮忙,我已经开始了几天了= =
如果你有一个包含两列EventID
和EventName
的表Event
,并且你确实有EventName
,那么你可以使用像
SELECT EventID
FROM dbo.Event
WHERE EventName = @EventName
在你的代码中。 请注意:如果所有事件名称都是唯一的,这只能可靠地工作 - 如果您碰巧有两个相同名称的事件,则无法区分这两个事件.....
确实如此:您不应该使用/存储事件名称 - 当您在UI中工作时,您应该拥有EventID - ID是唯一能够唯一且清楚地标识事件的事物。
因此,您真正需要做的是更改应用程序,以便在用户在ASP.NET UI中进行选择时使用EventID 。 大多数情况下,您既可以指定用户的显示值(事件名称),也可以指定作为EventID的键值 。 当用户从下拉列表中选择一个事件时,用户会选择一个名称 - 但您将能够获取作为数据密钥的EventID 。
更新:为了将EventID
和EventName
放入列表框,您需要使用包含这两个值的类Event
。 从数据库中填充该类并将其绑定到列表框,使EventName
成为DataTextField,将EventID
作为DataValueField。 然后,将显示事件名称,但是当用户选择项目时,您可以访问整个项目 - 包括它的EventID
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.