所以我之前已经问过类似的问题,但是我找不到具体情况的明确答案。我正在使用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行是突出显示的那一行。所以我认为它正在尝试插入,但由于某种原因,值为null,它没有从文本框中获取值。 我可能留下了一些明显的东西,我不知道,我真的很陌生。
答案 0 :(得分:1)
为什么不尝试代码隐藏?
AccessDataSource1.InsertCommand = "First INSERT Statement";
AccessDataSource1.Insert();
AccessDataSource1.InsertCommand = "Second INSERT Statement";
AccessDataSource1.Insert();