【发布时间】:2017-06-03 15:03:38
【问题描述】:
我想将具有不同值的相同 id 插入数据库。基本上,它是一种允许用户添加具有某些标准的新奖学金的形式。并非所有奖学金都适用于所有课程。因此将有两个表,scholarship 将获得新的奖学金,scholarshipCourse 将处理课程的资格。
我想同时插入两个数据。当用户按下提交时,scholarship 表中的奖学金 ID 将自动递增,而 scholarshipcourse 表将采用新的奖学金 ID 并插入
例如:
表scholashipCourse:
scholarship_id course
-------------------------
1 math
1 english
2 english
2 science
表scholarship:
scholarship_id scholarshipName
--------------------------------------
1 moon scholarship
2 star scholarship
3 light scholarship
假设 Scholarship_id 3 是新添加的奖学金,我如何获取该 id 并同时插入到奖学金课程表中。
我可以使用这个选择语句:
INSERT INTO user (name)
VALUES ('John Smith');
INSERT INTO user_details (id, weight, height)
VALUES (SELECT(id FROM user WHERE name = 'John Smith'), 83, 185);
但是如何获取刚刚添加的最新 id?
我需要像这样插入到我的 DAL 中:
公共数据表测试(字符串名称,字符串课程) {
SqlCommand cmd = new SqlCommand();
SqlConnection myConnection = new SqlConnection(strConnectionString);
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO Table1(schName) values (@schName)";
cmd.Parameters.AddWithValue("@schName", name);
conn.Open();
int i = cmd.ExecuteNonQuery();
int id = (int)cmd.ExecuteScalar();
cmd.CommandText = "Select SCOPE_IDENTITY();INSERT INTO Table2(ScholarshipID,DiplomaCourse) values (@id,@course)";
cmd.Parameters.AddWithValue("@id", id);
cmd.Parameters.AddWithValue("@course", course);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
已成功添加到两个表中,但它没有检索到最后一个id并插入到表中
【问题讨论】:
-
你不——你不能同时做——将它插入奖学金表并获取id然后将其插入课程表。
-
所以在插入新添加的奖学金之后,我检索 id 并插入到课程表中?