【发布时间】:2010-12-15 19:57:23
【问题描述】:
所以我知道以前有人问过类似的问题,但我找不到针对我的具体情况的明确答案。我正在使用 ASP.NET(在 Visual Web Developer 中),我需要将数据从一个表单插入到两个单独的表中。这是我的数据源:
<asp:AccessDataSource ID="AccessDataSource1" runat="server"
DataFile="~/App_Data/courseinfo.mdb"
SelectCommand="SELECT * FROM [tableCourse], [tableFaculty]"
InsertCommand="INSERT INTO [tableCourse]
([department], [name_first], [name_last], [prefix],
[course_number], [credits], [title], [description])
VALUES (?, ?, ?, ?, ?, ?, ?, ?); INSERT INTO [tableFaculty] ([name_first], [name_last], [phone], [email])
VALUES (?, ?, ?, ?)">
所以你看我已经尝试使用两个插入语句,它只是返回一个错误,说在 SQL 语句之后有额外的字符。我试过取出分号,然后它说我缺少一个分号。是否可以使用此控件一次插入两个表?如果没有,我该如何解决这个问题?
更新:
好的,在代码隐藏中尝试过,但我认为我做的不对,现在它给了我这个错误:
“/CCC”应用程序中的服务器错误。 索引或主键不能包含 Null 值。 说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.Data.OleDb.OleDbException:索引或主键不能包含 Null 值。
来源错误:
Line 87:
Line 88: AccessDataSource1.InsertCommand = "INSERT INTO [tableCourse] ([department], [name_first], [name_last], [prefix], [course_number], [credits], [title], [description]) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"
Line 89: AccessDataSource1.Insert()
Line 90:
Line 91: AccessDataSource1.InsertCommand = "INSERT INTO [tableFaculty] ([name_first], [name_last], [phone], [email]) VALUES (?, ?, ?, ?)"
第 89 行是突出显示的行。所以我认为它正在尝试插入,但由于某种原因这些值为空,它没有从文本框中获取值。 我可能遗漏了一些明显的东西,我不知道,我真的很陌生。
【问题讨论】:
-
您后面的代码,只知道大约 8 个参数而不是 16 个。
-
我同意 ncakmak。您可能应该在预兆中尝试这样做,而不是以这种方式这样做。这种方式非常笨拙且容易出错。另外,您的代码隐藏也不知道您的参数的问题。
-
您的代码看起来不错。您的主键字段的名称是什么,是否设置为自动增量?
-
现在我有 prefix 和 course_number 作为 tableCourse 的主键字段,name_first 和 name_last 作为 tableFaculty 的主键字段。现在只是用这些来测试它。
标签: asp.net sql insert multiple-tables