2010-12-15 67 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();