首页 > 解决方案 > Sql 数据库 System.Data.SqlClient.SqlException:'无效的对象名称'dbo.LoginTbl'。

问题描述

当我运行我的c#代码时,我在 sda.Fill(dtbl) 处遇到错误。我遵循了一个在线教程,看来我不是唯一一个遇到这个问题的人。

我不是很有经验c#

我收到以下错误:

System.Data.SqlClient.SqlException:'无效的对象名称'dbo.LoginTbl'。'

我的代码:

private void button2_Click_1(object sender, EventArgs e)
{
   SqlConnection sqlcon = new SqlConnection(@"Data Source=SPLAYZDK-LAPTOP\SQLEXPRESS01;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False");
   string query = "Select * from dbo.LoginTbl Where username = '" + txtUsername.Text.Trim() + "' and password = '" + txtPassword.Text.Trim() + "'";
   SqlDataAdapter sda = new SqlDataAdapter(query, sqlcon);
   DataTable dtbl = new DataTable();
   sda.Fill(dtbl);
   if (dtbl.Rows.Count == 1)
   {
      this.Hide();
      MessageBox.Show("Login Auth accepted. Logging in...");
      Mainmenu main = new Mainmenu();
      main.Show();
   }
   else
   {
      MessageBox.Show("User or pass is wrong!");
   }
}

我得到了一个 Sql 数据库,该数据库名为SPLAYZDK-LAPTOP\SQLEXPRESS01一个系统数据库,该数据库名为一个名为CrystalDB的表dbo.LoginTbl

提前致谢!

标签: c#sql-server

解决方案


看起来您正在连接到数据库,但是当它尝试查找表时,它在默认数据库中找不到表。这是因为您没有将 CrystalDB 数据库指定为 dbo.LoginTbl 所在的数据库。

我会查看连接字符串上的“初始目录”字段,您可以在此处查看:https ://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlconnection.connectionstring?view= dotnet-plat-ext-3.1

您应该只需要更新您的连接字符串以包含以下内容:

Initial Catalog=CrystalDB;

推荐阅读