2010-12-15 50 views
1

所以我知道以前也有类似的问题,但我无法找到明确的答案来解决我的具体情况。我正在使用ASP.NET(在Visual Web Developer中),我需要将数据从一个表单插入到两个单独的表中。这是我的数据源:ASP.NET和SQL--将数据插入到多个表中?

<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 (?, ?, ?, ?)"> 

所以你看,我用两个INSERT语句尝试,它只是回来了一个错误,说有SQL语句后多余的字符。我试着拿出分号,然后说我错过了一个分号。是否可以使用此控件一次插入两个表?如果不是,我该如何解决这个问题?

UPDATE:

好吧,试图在代码隐藏,但我不认为我所做的是正确的,现在它给我这个错误:

服务器错误/ CCC“应用程序。 索引或主键不能包含空值。 描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关该错误的更多信息以及源代码的位置。

异常详细信息:System.Data.OleDb.OleDbException:索引或主键不能包含空值。

源错误:

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号线是真实突出了一个。所以我认为它试图插入,但由于某些原因,这些值为空,它没有从文本框中获取值。 我可能留下了一些明显的东西,我不知道,我真的很新。

+0

后面的代码,只知道大约8个参数的不16. – 2010-12-15 20:19:09

+0

我同意机智ncakmak。你可能应该尝试这种方式,而不是这样做。这种方式非常笨拙和容易出错。另外,你的代码也不会被你的代码所知晓。 – 2010-12-15 22:00:20

+0

你的代码看起来不错。你的主键字段的名称是什么,它是否设置为自动增量? – 2010-12-16 01:06:40

回答

1

为什么你不试试它的代码隐藏?

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

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