2015-06-21 97 views
0

我正在創建一個使用Visual Studio 2013的ASP.net網站。具體來說,我試圖註冊一個客戶並將數據插入到客戶表中時間。當我註冊一個客戶時,我也想獲取該客戶的用戶標識(插入到我的用戶帳戶表中的數據庫中)。所以基本上我需要獲得用戶標識,但也需要確保這是當前用戶的用戶標識。ASP.Net註冊頁面 - 如何從其他表中獲取外鍵

這裏就是我試圖做的:

String userQueryStr = "SELECT UserAccountID FROM UserAccounts WHERE Username = " + Email.Text; 
System.Data.SqlClient.SqlCommand selectCommand = new System.Data.SqlClient.SqlCommand(userQueryStr, conn); 
int userID = Convert.ToInt32(selectCommand.ExecuteScalar());  

電子郵件是用戶名BTW。基本上,我試圖確保UserAccounts中的用戶名字段與註冊頁上文本框中輸入的內容相匹配。 然後我嘗試存儲一個插入語句,並傳遞用戶ID變量,它存儲用戶賬戶表中的當前用戶ID。 我的問題是,當我點擊註冊按鈕後運行應用程序時,當我輸入用戶名[email protected]時出現此錯誤:

發生了類型'System.Data.SqlClient.SqlException'的異常System.Data.dll,但未在用戶代碼中處理 附加信息:無法綁定多部分標識符「[email protected]」。該異常被拋出這一行:

int userID = Convert.ToInt32(selectCommand.ExecuteScalar()); 

回答

0

的Sql認爲電子郵件是一個字段,因爲你沒有之前和

String userQueryStr = "SELECT UserAccountID FROM UserAccounts WHERE Username =  '" + Email.Text+"'"; 
+0

現在我得到另一個錯誤後的報價。它說:在System.Data.dll中發生類型'System.InvalidOperationException'的異常,但未在用戶代碼中處理 附加信息:已經有一個與此命令關聯的打開的DataReader,必須先關閉該命令。錯誤發生在這一行:cmd1.ExecuteReader();我在同一個方法中使用2個SQLCommands。這是問題嗎? – user2958278

+0

此外,如果您需要它,這裏是我的客戶插入語句:querystr1 =「INSERT INTO客戶(名字,姓氏,StreetAddress1,電話,城市,州,用戶ID)」+ 「VALUES('」+ FirstName.Text + '',''+ LastName.Text +'','「+ StreetAddress.Text +」','「+ Phone.Text +」','「+ City.Text +」','「+ State.Text + 「','」+ userID +「')」; – user2958278

+0

其實我想通了。我所要做的只是在第一條插入語句之後關閉連接,並在第二條插入語句之前重新打開連接。謝謝您的幫助。 – user2958278