1

所以我知道以前有人问过类似的问题,但我找不到针对我的具体情况的明确答案。我正在使用 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 行是突出显示的行。所以我认为它正在尝试插入,但由于某种原因这些值为空,它没有从文本框中获取值。我可能遗漏了一些明显的东西,我不知道,我真的很陌生。

4

1 回答 1

1

为什么不试试代码隐藏呢?

AccessDataSource1.InsertCommand = "First INSERT Statement";
AccessDataSource1.Insert();

AccessDataSource1.InsertCommand = "Second INSERT Statement";
AccessDataSource1.Insert();
于 2010-12-15T21:38:24.723 回答