c#将输入值与mysql值进行比较

c#将输入值与mysql值进行比较,c#,mysql,visual-studio-2010,C#,Mysql,Visual Studio 2010,我想创建一个函数,用户可以在该函数上从MySQL数据库猜测值。label2是由其他代码随机生成的,因此用户必须通过输入texbox1猜测label2的合作伙伴值。我尝试对代码使用常用的登录功能 s = "SELECT val2 FROM data_reader.db WHERE val1='" + this.label2.Text + "'and image='" + this.textBox1.Text + "';"; int count = 0;

我想创建一个函数,用户可以在该函数上从MySQL数据库猜测值。label2是由其他代码随机生成的,因此用户必须通过输入texbox1猜测label2的合作伙伴值。我尝试对代码使用常用的登录功能

 s = "SELECT val2 FROM data_reader.db WHERE val1='" + this.label2.Text + "'and image='" + this.textBox1.Text + "';";
                int count = 0;

            while (mdr.Read())
            {
                count = count + 1;
            }
            if (count == 1)
            {
                MessageBox.Show("correct");
            }
            else
            {
                MessageBox.Show("wrong");
            }

此代码的问题是,即使值正确,它也总是返回错误。是否缺少任何算法,或者我的代码不适合此用途?

好的,我将在这里帮助您了解其他内容

第一:我在这里学到的教训是,永远不要使用“+”,应该在查询参数上使用AddWithValue,如下所示:

cmd.CommandText = "SELECT val2 FROM data_reader.db WHERE val1 = @value1 and image=@image";
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@value1", this.label2.Text);
cmd.Parameters.AddWithValue("@image", this.textBox1.Text);
它更容易理解,也更安全

第二:你只需要使用

if (mdr.Read())
{
    MessageBox.Show("Correct!");
}
else
{
    MessageBox.Show("Wrong!");
}

您忘记了在
标签2.Text
值和
连接之间插入空格字符

s = "SELECT val2 FROM data_reader.db WHERE val1='" + this.label2.Text 
    + "' AND image='" + this.textBox1.Text + "';";

如果(计数>=1)而不是
=
,可以使用
?如果你期望只有一个答案,你为什么还要数呢?或者可以有多行具有相同的
val1
image
值吗?
s
mdr.Read()之间的关系如何?
?请不要连接字符串以形成SQL查询。使用这种方法,您极易受到SQL注入攻击。您好,我想我的mysql查询有问题,我有一个数据库是data_reader.db,我想找到image的值(char而不是filepath)。val1是随机生成的,所以我必须猜测图像值…知道吗?嗨,我认为我的mysql查询有问题,我有一个数据库是data_reader.db,我想找到图像的值(char而不是filepath)。val1是随机生成的,所以我必须猜测图像值…有什么想法吗?-