【问题标题】:retrieving data from Mysql table using c#使用 C# 从 Mysql 表中检索数据
【发布时间】:2014-04-11 10:29:42
【问题描述】:

我正在尝试编写一个 c sharp 程序,在其中将数据输入数据库并从数据库中读取数据

数据库名称是 kangoojump,我这里有一个管理表来存储 id、用户名和密码

我为我的程序创建了一个登录屏幕,并想输入我的用户名和密码,当我按下登录按钮时,我想从数据库表中检索数据并比较两者,如果它们匹配,则可以访问下一个表单。 .

这是我的代码

MySqlCommand SelectCommand = new MySqlCommand(" SELECT username FROM kangoojump.admin where _id=1", mcon);


MySqlDataReader myReader;
mcon.Open();
myReader = SelectCommand.ExecuteReader();
while (myReader.Read())
{
temp1 = myReader["username"].ToString();
}

我在函数中创建了字符串类型的用户名、密码、temp1、temp2,但是

当我尝试运行程序时,我收到“使用未分配变量 'temp1'”的错误 我的代码有什么问题? 谢谢

【问题讨论】:

  • 您是否尝试在此代码部分之前使用 temp1 变量?
  • 我假设在您发布的代码上方的某处有一个string temp1; 错误消息意味着您必须分配一个初始值,例如:string temp1 = string.Empty;
  • 永远不要存储密码。存储密码哈希
  • 这解决了我的问题,谢谢!如何将我的问题标记为已解决?

标签: c# mysql


【解决方案1】:

你在哪里定义 temp1 ? 定义 temp1 时

按如下方式进行 -

string temp1 = string.Empty;

【讨论】:

    【解决方案2】:

    问题(部分)与这行代码有关:

    while (myReader.Read())
    

    你我都很聪明,知道数据库查询总是会返回一行,但编译器不是。这是因为我们有编译器无法使用的信息:我们知道会有管理记录。编译器无法知道这一点。因此,编译器不能保证您的代码将永远进入该 while 循环的主体。这意味着它也不能保证你会为 temp1 变量赋值......因此,你可能的“未赋值变量'temp1'”:编译器不能保证你已经写了一个合理的值变量还没有,你不能读取它,直到你这样做。

    简单的解决方案是在您第一次声明变量时为其分配一个基本值:

    string temp1 = "";
    

    尽管我们在这里:永远永远存储纯文本密码。存储单向密码哈希

    【讨论】:

      猜你喜欢
      • 2022-08-14
      • 1970-01-01
      • 2015-06-24
      • 2012-12-21
      • 1970-01-01
      • 2011-12-23
      • 2013-02-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多