c#将输入值与mysql值进行比较
我想创建一个函数,用户可以在该函数上从MySQL数据库猜测值。label2是由其他代码随机生成的,因此用户必须通过输入texbox1猜测label2的合作伙伴值。我尝试对代码使用常用的登录功能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;
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是随机生成的,所以我必须猜测图像值…有什么想法吗?-