C# - 执行查询时登录无效

用户11907948

我是 C# 新手,正在学习打开和关闭查询,现在我执行了正确的查询,但没有得到正确的输出。请告诉我如何解决这个问题,谢谢。

这是我的查询代码。

SqlCommand cmd = new SqlCommand("Select * from users Where username = @username and password = @password", sqlcon);
cmd.CommandType = CommandType.Text;

cmd.Parameters.AddWithValue("@username", txtUsername.Text);
cmd.Parameters.AddWithValue("@password", txtPassword.Text);

SqlDataReader dr = cmd.ExecuteReader();

sqlcon.Open();
cmd.ExecuteNonQuery();
sqlcon.Close();

if (dr.HasRows)
{
    Main objMain = new Main();
    this.Hide();
    objMain.Show();
}
else
{
    MessageBox.Show("Check your username and password");
}

我收到此错误

System.InvalidOperationException: 'ExecuteReader 需要一个打开且可用的连接。连接的当前状态是关闭的。

marc_s

您需要在.ExecuteReader() 之后 调用sqlcon.Open()- 为什么还要执行.ExecuteNonQuery()?? 已经通过调用执行查询.ExecuteReader()- 这是无用的,应该删除(ExecuteNonQuery适用于运行INSERT, UPDATEor 的SQL 语句DELETE- 但不适用于您SELECT在这里类似情况的情况......)。

SqlCommand cmd = new SqlCommand("SELECT * FROM users WHERE username = @username AND password = @password", sqlcon);

cmd.Parameters.Add("@username", SqlDbType.VarChar, 100).Value = txtUsername.Text);
cmd.Parameters.Add("@password", SqlDbType.VarChar, 100).Value = txtPassword.Text;

// open connection    
sqlcon.Open();

// execute reader and iterate over rows
SqlDataReader dr = cmd.ExecuteReader();

if (dr.HasRows)
{
    Main objMain = new Main();
    this.Hide();
    objMain.Show();
}
else
{
    MessageBox.Show("Check your username and password");
}   

// close connection only **AFTER** you've read the data!
sqlcon.Close();

此外:Dan Guzman 说:“AddWithValue 是邪恶的” - 请阅读文章并停止使用它!使用常规Parameters.Add()方法并定义参数的数据类型!

另外:这看起来像是您将密码以纯文本形式存储在数据库表中。不要这样做!说真的 - 永远不要这样做。如果您必须存储密码,则需要进行散列和加盐- 您会发现许多关于如何执行此操作的文章和博客文章 -拥抱它!.

最后一点:由于您只想检查给定用户是否存在用户名和密码,因此返回所有列确实是一种矫枉过正Users- 仅返回例如UserId(或其他一些, 小列) - 然后使用.ExecuteScalar(). 如果具有该用户名和密码的用户存在,UserId则返回ExecuteScalar()- 如果该用户不存在,您将返回 NULL。

像这样的东西:

SqlCommand cmd = new SqlCommand("SELECT UserId FROM users WHERE username = @username AND password = @password", sqlcon);

cmd.Parameters.Add("@username", SqlDbType.VarChar, 100).Value = txtUsername.Text);
cmd.Parameters.Add("@password", SqlDbType.VarChar, 100).Value = txtPassword.Text;

// open connection    
sqlcon.Open();

// execute scalar 
object result = cmd.ExecuteScalar();

// if we got a result --> user with that username nad password exists
if (result != null)
{
    Main objMain = new Main();
    this.Hide();
    objMain.Show();
}
else
{
    MessageBox.Show("Check your username and password");
}   

sqlcon.Close();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

查询时C#语句未执行

来自分类Dev

C# | 登录无效

来自分类Dev

尝试使用C#执行查询时SqlCommand返回错误

来自分类Dev

从C#对SQL Server执行插入查询时发生异常

来自分类Dev

执行SQL查询c#

来自分类Dev

ORA-00911:执行查询时出现无效字符错误

来自分类Dev

尝试执行插入查询时,Python的参数类型无效

来自分类Dev

登录时按Ctrl + C

来自分类Dev

在C#中执行SQL查询时出错,当我手动输入它时没有错误

来自分类Dev

使用SQL的Cosmos DB查询在Data Explorer中运行时有效,但在C#DocumentClient中执行时则无效

来自分类Dev

C ++问题,引用无效指针时出错

来自分类Dev

MongoDB C#查询执行位置

来自分类Dev

从C#代码执行SQL查询

来自分类Dev

在C ++中异步执行SQL查询

来自分类Dev

执行第二个查询时遇到麻烦| 通过C#在ACCESS中建立关系

来自分类Dev

在C#,SQL Server中执行查询时出错:尝试更新是否已存在值,否则插入

来自分类Dev

使用GuidRepresentation.Standard GuidSerializer执行查询时,MongoDB C#驱动程序出现问题

来自分类Dev

执行第二个查询时遇到麻烦| 通过C#在ACCESS中建立关系

来自分类Dev

在Oracle中执行sql查询时抛出ORA-00911无效错误

来自分类Dev

当我执行查询“无效的对象名称'sw.Switch'”时发生错误。

来自分类Dev

执行CQL查询语句时收到错误警报“无效字符串”

来自分类Dev

为什么在尝试使用实体框架执行查询时指定的强制转换无效?

来自分类Dev

执行查询时出错

来自分类Dev

登录时执行程序

来自分类Dev

C ++编译时未执行的检查

来自分类Dev

在编译时执行C宏功能

来自分类Dev

从C Shell执行a.out时出错

来自分类Dev

执行`bash -c`时如何获得颜色?

来自分类Dev

在编译时执行C宏功能

Related 相关文章

  1. 1

    查询时C#语句未执行

  2. 2

    C# | 登录无效

  3. 3

    尝试使用C#执行查询时SqlCommand返回错误

  4. 4

    从C#对SQL Server执行插入查询时发生异常

  5. 5

    执行SQL查询c#

  6. 6

    ORA-00911:执行查询时出现无效字符错误

  7. 7

    尝试执行插入查询时,Python的参数类型无效

  8. 8

    登录时按Ctrl + C

  9. 9

    在C#中执行SQL查询时出错,当我手动输入它时没有错误

  10. 10

    使用SQL的Cosmos DB查询在Data Explorer中运行时有效,但在C#DocumentClient中执行时则无效

  11. 11

    C ++问题,引用无效指针时出错

  12. 12

    MongoDB C#查询执行位置

  13. 13

    从C#代码执行SQL查询

  14. 14

    在C ++中异步执行SQL查询

  15. 15

    执行第二个查询时遇到麻烦| 通过C#在ACCESS中建立关系

  16. 16

    在C#,SQL Server中执行查询时出错:尝试更新是否已存在值,否则插入

  17. 17

    使用GuidRepresentation.Standard GuidSerializer执行查询时,MongoDB C#驱动程序出现问题

  18. 18

    执行第二个查询时遇到麻烦| 通过C#在ACCESS中建立关系

  19. 19

    在Oracle中执行sql查询时抛出ORA-00911无效错误

  20. 20

    当我执行查询“无效的对象名称'sw.Switch'”时发生错误。

  21. 21

    执行CQL查询语句时收到错误警报“无效字符串”

  22. 22

    为什么在尝试使用实体框架执行查询时指定的强制转换无效?

  23. 23

    执行查询时出错

  24. 24

    登录时执行程序

  25. 25

    C ++编译时未执行的检查

  26. 26

    在编译时执行C宏功能

  27. 27

    从C Shell执行a.out时出错

  28. 28

    执行`bash -c`时如何获得颜色?

  29. 29

    在编译时执行C宏功能

热门标签

归档