好吧,我是一名頭痛的編程學生,希望有人能夠治好。如何在ASP.NET中使用Access中的JOIN SQL語句?
我目前正在創建使用ASP.NET在Microsoft Visual Studio中的一個網站,一個項目,這裏是我的問題:
我在Microsoft Access數據庫中包含用戶日誌中的數據表(姓名,電子郵件,密碼)以及包含用戶選擇的用戶安全問題編號(編號是對具有實際問題的ArrayList的引用)以及他們提交的實際答案的鏈接表。
我正在利用Web服務來處理任何需要訪問數據庫的東西。
我想要做的是選擇數據庫中的安全問題編號並返回它的值,但我不確定什麼是正確的SQL語句或者我的代碼是否允許它工作。所以如果有人能幫助我,我會很感激。請注意,我對編程相當陌生。
這裏是我的代碼:
//This retrieves the security question of the user.
[WebMethod]
public string GetUserQuestion(string email)
{
try
{
//Connect to database.
this.ConnectToDatabase();
OleDbCommand cmd = conn.CreateCommand();
//The query to return the value of the index of the question that is stored in the arraylist.
cmd.CommandText = @"SELECT SecurityInfo.QuestionNumber FROM [SecurityInfo],[UserDetails] WHERE (UserDetails.Email = '" + email + "' JOIN [UserDetails] ON SecurityInfo.ID = UserDetails.ID)";
//cast the value to a string
string userQuestion = cmd.ExecuteReader().ToString();
return userQuestion;
}
catch (Exception e)
{
return e.ToString();
}
finally
{
this.DisconnectDatabase();
}
}
PS:該方法幾乎做什麼,他們被命名爲所以它不應該是必要的,包括他們的問題。
這是在服務中測試這種方法時,我得到的錯誤:
<string xmlns="http://tempuri.org/">
System.Data.OleDb.OleDbException (0x80040E14): Syntax error (missing operator) in query expression '(UserDetails.Email = '[email protected]' JOIN [UserDetails] ON SecurityInfo.ID = UserDetails.ID)'. at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) at System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior) at System.Data.OleDb.OleDbCommand.ExecuteReader() at PTWService.GetUserQuestion(String email) in c:\Users\Rudi\Documents\Visual Studio 2010\WebSites\PTWService\App_Code\PTWService.cs:line 108
</string>
我改變了我的代碼的(這擺脫了錯誤,但我仍然沒有得到什麼,我從數組要):
//This retrieves the security question of the user.
[WebMethod]
public string GetUserQuestion(string email)
{
try
{
//Connect to database.
this.ConnectToDatabase();
OleDbCommand cmd = conn.CreateCommand();
//The query to return the value of the index of the question that is stored in the arraylist.
cmd.CommandText = @"SELECT SecurityInfo.QuestionNumber FROM [SecurityInfo] WHERE (UserDetails.Email = '" + email + "') JOIN [UserDetails] ON SecurityInfo.ID = UserDetails.ID";
//Parse the value to a int
int UserQuestionNr = Int32.Parse(cmd.ExecuteReader().ToString());
//Get the question from the array.
string Question = (string)questionArray[UserQuestionNr];
return Question;
}
catch (Exception)
{
return null;
}
finally
{
this.DisconnectDatabase();
}
}
因此,如果任何人都可以告訴我,如果我的查詢語句是錯誤的,如何糾正它或者它的其他什麼東西完全,我將非常感激。
你可以顯示的結果集你有正確的輸出應該是什麼相處? – JeffO 2014-12-05 18:39:31
我得到的結果是空的,因爲有一些例外在某處逗弄我。數據庫的結果應該是0-7之間的數字,它代表存儲8個安全問題的ArrayList的索引。然後用它從數組中獲取該值,並將其存儲在「問題」變量中,然後返回。 – 2014-12-05 19:07:23