【发布时间】:2017-01-20 01:52:42
【问题描述】:
我有一个表格,它使用两个表格来插入数据。
表单中的某些列会像:
scholarship name, course, year
涉及的两个表是:
scholarshipDetail , scholarshipCourse.
-
scholarshipDetail表有奖学金名和年份 -
scholarshipCourse表有奖学金ID,课程
奖学金详情:
schid schName year
-----------------------------
1 star 2015
2 moon 2016
奖学金课程:
schID course
------------------
1 maths
1 english
2 maths
假设新用户想要添加新的奖学金,这意味着 id 将为 3 并插入到两个表中。我该怎么做? (管理插入 ALR)
新错误: 已编辑
public DataTable test(string name, string course)
{
string insertsql = "INSERT INTO Table1(schName) OUTPUT INSERTED.addID values (@schName)";
SqlCommand cmd = new SqlCommand(insertsql,conn);
cmd.Parameters.AddWithValue("@schName", name);
conn.Open();
int i = cmd.ExecuteNonQuery();
var table1Id = (int)cmd.ExecuteScalar();
string insertsql1 = "INSERT INTO Table2(ScholarshipID, DiplomaCourse) VALUES (@id, @course)";
SqlCommand cmd2 = new SqlCommand(insertsql1, conn);
cmd2.Parameters.AddWithValue("@id", table1Id);
cmd2.Parameters.AddWithValue("@course", course);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
da.SelectCommand = cmd2;
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
我表中的输出是
表1
schID schname
-------------------
1 jj
2 jj
表2
TableID schID Course
------------------------------
1 2 Maths
数据在 Table1 中被插入两次。为什么呢? (已解决)
已编辑:
现在的问题是,会有复选框允许用户选择适用于奖学金的课程。
当用户点击所有复选框时,只有最后一个复选框会插入数据库。
在我的代码隐藏(cs)中:
protected void Button1_Click(object sender, EventArgs e)
{
// addScholarship[] test = new addScholarship[1];
string course = "";
string Name = schName.Text;
if (DIT.Checked )
{
course = "DIT";
}
if (DFI.Checked)
{
course = "DFI";
}
addScholarship[] insertName = new addScholarship[1];
addScholarship insertedName = new addScholarship(Name,course);
scholarshipBLL obj = new scholarshipBLL();
DataTable dt = obj.test(Name, course);
}
【问题讨论】:
-
假设新用户想要添加新的奖学金,这意味着 id 为 3 并插入到两个表中 - 你的
scholarshipDetail表是否有auto_increment属性?如果是这样,您的插入将始终为新行条目的 ID 提供+1。这样,您可能希望使用mysqli_insert_id、an example 检索该 ID。但是,如果两个人实际使用该系统会怎样——该答案属于数据库事务。 -
是的,它确实具有自动增量功能。所以每次添加新奖学金时,schID 实际上是一个自动增量。问题是我如何在我的奖学金课程表中插入新的 ID。至于现在我可以插入两个表。但我在奖学金课程中的 schID 为 NULL
-
我正在使用 asp.net fyi :)
-
啊对不起@skylight,好吧..我认为你最好使用实体框架而不是简单的查询,虽然there is an example to retrieve last id,但我自己从未尝试过。
-
如何将选中的复选框值从 UI 传递到后面的代码?使用所有选中的复选框值的逻辑是什么?