C# 试图通过2个条目从db表中进行选择-登录
您好,我对sql非常陌生,所以如果我的问题有一个微不足道的答案,我深表歉意 我正试图通过数据库中的表进行登录检查。通过上面的代码,您可以看到我正在基于两个字段(用户名和密码)检查表中的条目。我在SqlCommand中得到一个错误-告诉我不存在这样的表。对于连接字符串,我打开服务器资源管理器->右键单击我的数据库,并将整个内容复制到显示“连接字符串”的位置,因此我确信它是正确的 我的数据库中有两个表(至少我认为是这样),一个存储其他内容,另一个存储用户信息。我可以看到另一个名为Comments的表,但是我看不到用户内容的表(我需要参考的表)。我会附上一些截图来显示我所看到的。 我做错了什么?我是否以错误的方式创建表?我指的是无效的吗?任何帮助都将不胜感激,谢谢。我看不到或无法选择的表是TableUsers。正如您所看到的,我在VisualStudio上看到了它,但在SQL管理studio中没有看到 错误是我不能引用我需要的表 如果它说“没有这样的表…”,那么您就拼错了表名。再查一遍。我会用C# 试图通过2个条目从db表中进行选择-登录,c#,sql,sql-server,C#,Sql,Sql Server,您好,我对sql非常陌生,所以如果我的问题有一个微不足道的答案,我深表歉意 我正试图通过数据库中的表进行登录检查。通过上面的代码,您可以看到我正在基于两个字段(用户名和密码)检查表中的条目。我在SqlCommand中得到一个错误-告诉我不存在这样的表。对于连接字符串,我打开服务器资源管理器->右键单击我的数据库,并将整个内容复制到显示“连接字符串”的位置,因此我确信它是正确的 我的数据库中有两个表(至少我认为是这样),一个存储其他内容,另一个存储用户信息。我可以看到另一个名为Comments的表
从[数据库]中显示表来检查表列表代码>来自代码,并将其列在一些数据表中。
但是,“没有这样的表…”表示您的ConnectionString是有效的。
顺便说一句,我建议您,如果您的查询只需要true/false,那么您更愿意使用[table]中的选择count(*),其中password=@password和user=@user
。然后,不是填充数据集/数据表,然后计算行数,而是使用ExecuteScalar将其存储到整数变量中-它更快,占用资源更少。您的代码表明您使用的是SQL Server,因此我修复了标记。该数据库是如何创建的,您是如何将VS与数据库/数据源连接的?我这样问是因为你的VS截图显示你显示了“所有文件”(在你的解决方案浏览器顶部的切换按钮)。带有虚线图标的文件表示这些文件存在于光盘中,但它们可能不包括在项目中。您能从注释表中读取吗?安装程序有问题,不是您的SQL有问题。我认为连接字符串没有打开您正在使用的数据库。首先删除连接字符串的AttachDbFilename部分。MDF文件已附加到服务器,仅当您连接到未附加到服务器的MDF TG时才需要该文件。当连接到服务器时,AttachDbFilename会给出错误消息。其次,更改“数据源”以匹配打开SQLServerManagementStudio时在登录窗口上看到的服务器名称。当您的连接字符串未使用该服务器时,SQL Server看起来是15.0。
private bool CheckIfExist(string username, string password)
{
SqlConnection conn = new SqlConnection("Data Source=
(LocalDB)\\MSSQLLocalDB;AttachDbFilename=C:\\Users\\Radi\\Desktop\\
WebSiteF86454\\WebSiteF87300\\App_Data\\Database.mdf;Integrated Security=True");
SqlCommand cmd = new SqlCommand("SELECT * FROM dbo.TableUsers WHERE Username=@username and
UserPassword=@password", conn);
cmd.Parameters.AddWithValue("@Username", username);
cmd.Parameters.AddWithValue("@password", password);
conn.Open();
SqlDataAdapter adpt = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adpt.Fill(ds);
conn.Close();
int count = ds.Tables[0].Rows.Count;
if (count == 1) { return true; }
else { return false; };
}