2013-04-05 5 views
0

내 데이터베이스 UsersDB에서 사용자 정보를 읽음으로써 로그인 폼을 통해 사용자를 인증하려고합니다. 읽으려고하면 오류가 발생합니다. 잘못된 개체 이름 : UsersDBSQLDataReader 잘못된 개체 이름

새 사용자를 데이터베이스에 추가 할 때 오류가 없으므로이 오류가 발생하는 이유를 알 수 없습니다. 여기에 내가 무엇입니까 스택 추적은 다음과 같습니다

[SqlException (0x80131904): Invalid object name 'UsersDB'.] 
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +388 
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +810 
System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +4403 
System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() +82 
System.Data.SqlClient.SqlDataReader.get_MetaData() +135 
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +6666037 
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite) +6667856 
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite) +577 
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +107 
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +288 
System.Data.SqlClient.SqlCommand.ExecuteReader() +302 
AuthWebRole.Account.UserLogin.Buttonlogin_Click(Object sender, EventArgs e) in c:\Users\Tamara\Documents\Visual Studio 2012\Projects\TCWalletAzure\AuthWebRole\Account\UserLogin.aspx.cs:32 
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +155 
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3804 

편집 :

string strcon = "Server=tcp:qemcclhlar.database.windows.net,1433;Database=UsersDB;User ID=[userid];Password=[mypassword];Trusted_Connection=False;Encrypt=True;Connection Timeout=30"; 
     SqlConnection con = new SqlConnection(strcon); 

     SqlCommand com = new SqlCommand("CheckUser", con); 
     com.CommandType = CommandType.StoredProcedure; 
     SqlParameter user = new SqlParameter("username", UserName.Text); 
     SqlParameter pword = new SqlParameter("password", Password.Text); 
     com.Parameters.Add(user); 
     com.Parameters.Add(pword); 
     con.Open(); 
     SqlDataReader rd = com.ExecuteReader(); 
     if (rd.HasRows) 
     { 
      rd.Read(); 
      LabelInfo.Text = "Login successful."; 
     } 

     else 
     { 
      LabelInfo.Text = "Invalid username or password."; 

     } 

데이터베이스 스키마 (내 코드에서 사용자 이름과 암호를 대체) :

쿼리는 다음과 같습니다

데이터베이스 : 사용자 테이블이있는 UsersDB

+1

의미없는 예외 대신 데이터베이스 스키마 및 쿼리를 표시하십시오. –

+0

편집에 쿼리를 추가했습니다. –

답변

0

여기 중요한 것은 p입니다. 견고하게 연결 문자열. 다음을 수행하십시오. 빈 텍스트 파일을 작성하고 이름을 "myconnection.udl"로 변경하십시오. 이제 파일을 두 번 클릭하면 애플릿이 실행됩니다. 데이터베이스 연결을 구성하고 테스트 할 수 있습니다. 이제 메모장에서 udl 파일을 열면 올바른 연결 문자열이 표시됩니다. 연결 문자열을 앱 연결 설정에 복사합니다. UDL 파일은 일반적으로 오해됩니다. 그것들은 단순히 연결 설정을 저장하는 텍스트 파일입니다. 그런 다음 연결 dll을 호출합니다. udl 파일이 작동하면 올바른 연결 문자열이 표시됩니다. 100 %

0

프로 시저 쿼리에서 잘못된 테이블을 입력했습니다. 다음대로해야했다 :

생성 PROCEDURE CheckUser (VARCHAR (50)와 같은 @username, VARCHAR 같은 @Password (50) ) USERTABLE FROM * AS SELECT WHERE 자명 = @ 이름과 비밀번호 = @password

UserTable 대신 UsersDB를 잘못 입력했습니다.