2013-04-05 2 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 

Edit:

Запрос выглядит следующим образом: (я заменил свое имя пользователя и пароль в моем коде)

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 с таблицей UserTable

+1

Показать схему базы данных и запрос вместо бессмысленного исключения. –

+0

Я добавил запрос в редактирование –

ответ

0

Хорошо, что здесь важно p грамотно подключить строку. Выполните следующие действия: создайте пустой текстовый файл и переименуйте его «myconnection.udl». Теперь дважды щелкните файл, и он запустит апплет. Вы можете настроить подключение к своей базе данных и протестировать его. Теперь откройте файл udl в блокноте, вы увидите правильную строку соединения. Скопируйте строку подключения в настройки подключения к приложению. Файлы UDL, как правило, неправильно понимаются. Это просто текстовый файл, который содержит настройки подключения. Затем они вызывают соединение dll. Если файл udl работает, то у вас есть правильная строка соединения 100%

0

Я решил свою проблему - я ввел неправильную таблицу в запрос процедуры. Это должно было быть следующим:

создать ПРОЦЕДУРА CheckUser ( @username, как VARCHAR (50), @password в VARCHAR (50) ) AS SELECT * FROM WHERE UserTable Имя пользователя = @ имя пользователя и пароль = @password

Я ошибочно зачисленных UsersDB вместо UserTable

Смежные вопросы