我从其他人那里继承了这个项目,需要对其进行清理以满足新的要求——他们是这样设计的。
我的 Access 数据库中有 2 个表(我在大括号中包含了字段的数据类型):
事件:
事件ID {自动编号} | EventTitle {短文本} | 事件描述 {长文本} | EventDate {日期/时间} | EventCategory {使用 Categories/CategoryTitle 的行源查找}
分类:
CategoryID {自动编号} | CategoryTitle {短文本} | CategoryImage {短文本} | CategoryColor {短文本}
“类别”表包含有关特定类别的所有“主”信息,例如名称、图标(例如勾号、十字等)。
我有一个查询(在 Access 内部)将这两个表中的数据拉到一起,下面的字段按顺序排列:
事件ID | 活动标题 | 事件描述 | 活动日期 | 类别标题 | 类别图像
查询的 SQL 是:
SELECT Events.EventID, Events.EventTitle, Events.EventDescription,
Events.EventDate, Categories.CategoryTitle, Categories.CategoryImage,
Categories.CategoryColor FROM Events INNER JOIN Categories ON
Events.EventCategory = Categories.CategoryID ORDER BY
Events.EventDate;
网站的其他区域依靠查询来检索信息。
在 Visual Studio 中,我试图将来自 asp 文本框和下拉控件的值插入到我的数据库中的以下字段中:
- EventTitle(到 Events.EventTitle)
- EventDescription(到 Events.EventDescription)
- EventDate(到 Events.EventDate)
- EventCategory(到 Events.EventCategory)
第 4 号是有问题的,因为它目前是对“主”事件表的访问查找,该表包含有关实际类别的信息。据推测,从来没有打算以这种方式将数据插入表中。设置事件类别的唯一可能方法是使用 Access 数据库内的下拉组合框来选择事件。
最后,这是我正在编写的插入数据库的子例程:
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim conn As New OleDb.OleDbConnection(ConfigurationManager.ConnectionStrings("BookMeetConnString").ConnectionString)
conn.Open()
Dim cmd As New OleDbCommand("INSERT INTO Events (EventTitle, EventDescription, EventDate, EventCategory) VALUES (@f1,@f2,@f3,@f4)",
conn)
cmd.Parameters.AddWithValue("@f1", tb_eventtitle.Text)
cmd.Parameters.AddWithValue("@f2", tb_eventdescription.Text)
cmd.Parameters.AddWithValue("@f3", DateTime.ParseExact(tb_eventdate.Text, "dd/MM/yyyy",
CultureInfo.InvariantCulture))
cmd.Parameters.AddWithValue("@f4", dd_eventcategory.SelectedValue)
cmd.ExecuteNonQuery()
conn.Close()
End Sub
网站上其他地方还有其他 ASP.NET 数据绑定控件,它们依赖于“类别”表的内容保持不变,所以我怎样才能将上面列出的字段插入到“事件”表中(特别是EventCategory )?
编辑:
这是我完成的子:
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles
Button1.Click
Dim conn As New OleDb.OleDbConnection(ConfigurationManager.ConnectionStrings("BookMeetConnString").ConnectionString)
conn.Open()
Dim cmd As New OleDbCommand("INSERT INTO Events (EventTitle, EventDescription, EventDate, EventCategory) VALUES (@f1,@f2,@f3,@f4)",
conn)
cmd.Parameters.AddWithValue("@f1", tb_eventtitle.Text)
cmd.Parameters.AddWithValue("@f2", tb_eventdescription.Text)
cmd.Parameters.AddWithValue("@f3", DateTime.ParseExact(tb_eventdate.Text, "dd/MM/yyyy",
CultureInfo.InvariantCulture))
cmd.Parameters.AddWithValue("@f4", dd_eventcategory.SelectedIndex + 1)
cmd.ExecuteNonQuery()
conn.Close()
End Sub