我想只用一个按钮从一个表和另一个表中插入数据。
以下是我的表格:
用户表:
bottomLayoutGuide.length
课程表:
id course_id firstname middlename lastname
1 1 foo bar foos
2 1 fooos bars fooss
3 2 ipsum fooss lorem
用户和课程表中的两个id都是自动增量。现在我想插入数据。示例:firstname = foo,middlename = bar,lastname = bar,course = BSIT。如您所见,我想键入连接到用户的课程。现在问题是我想自动插入外键以便连接它们。
我输出两个表的查询是:
id course_name
1 BSIT
2 Computer Science
以下是我目前插入数据的代码:
SELECT user.id, user.firstname, user.middlename, user.lastname, course.course_name
FROM course INNER JOIN user ON course.id = user.course_id
我被困在这里。这就是为什么我没有包括课程表,因为我不知道该怎么做。请帮帮我。
答案 0 :(得分:0)
正如@Steve所提到的,考虑一个ComboBox对象(假设是Windows表单),您可以使用数据源查询填充数据源查询,这是@ Steve自己的答案here所示。
从那里,在您的SQL语句中插入comboBox1.SelectedValue
和其他列。通常,对于预定列表,您不要让用户在开放式文本框中键入类似课程名称的字符串,因为拼写错误和不一致性将与实际值不对齐:
Dim sql As String = "INSERT INTO `user` (firstname, middlename, lastname, course_id) VALUES (?fname, ?lname, ?mname, ?course)"
cmd = New MySqlCommand(sql, conn)
cmd.Parameters.AddWithValue("?fname", TextBox1.Text)
cmd.Parameters.AddWithValue("?lname", TextBox2.Text)
cmd.Parameters.AddWithValue("?mname", TextBox3.Text)
cmd.Parameters.AddWithValue("?course", ComboBox.SelectedValue)
使用课程名称文本框的现有设置的替代方法是INSERT INTO...SELECT
查询,这又是不可靠的,因为用户可能会拼写错误,添加特殊字符,甚至包括空格到值。以下假设 course_name 是唯一的。
INSERT INTO `user` (firstname, middlename, lastname, course_id)
SELECT ?fname, ?lname, ?mname, c.course_id
FROM course c
WHERE c.course_name = ?course