我正在尝试通过从我的数据库UsersDB中读取用户详细信息来通过登录表单对用户进行身份验证。在尝试阅读时,我收到一个错误:无效的对象名称:UsersDB
向数据库添加新用户时没有错误,所以我不知道为什么会收到此错误。这是我得到的堆栈跟踪:
[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 with table UserTable
答案 0 :(得分:0)
这里重要的是连接字符串。执行以下操作:创建一个空文本文件并将其重命名为“myconnection.udl”。现在双击该文件,它将启动一个小程序。您可以配置与数据库的连接并对其进行测试。现在在记事本中打开udl文件,您将看到正确的连接字符串。将连接字符串复制到您的应用连接设置。 UDL文件通常被误解。它们只是一个包含连接设置的文本文件。然后他们调用连接dll。如果udl文件有效,那么你有一个正确的连接字符串100%
答案 1 :(得分:0)
我解决了我的问题 - 我在程序查询中输入了错误的表格。它必须如下:
创建PROCEDURE CheckUser ( @username as varchar(50), @password as varchar(50) ) 如 SELECT * FROM UserTable WHERE用户名= @用户名和密码= @密码
我错误地输入了UsersDB而不是UserTable