如何设置sql参数

时间:2018-03-07 17:49:46

标签: c# mysql database sql-injection sqlparameters

我尝试使用sql参数的代码,但没有工作,并没有返回任何错误。我该如何解决?

string sql = "SELECT * FROM "+mw.db_name+".ananmez_genel Where hasta_id='@hastaid'";

string connectionString = ConfigurationManager.ConnectionStrings["MYDBConnectionString"].ConnectionString;

using (MySqlConnection connect = new MySqlConnection(connectionString))
{
    using (MySqlCommand cmd = new MySqlCommand(sql, connect))
    {
        connect.Open();
        cmd.Parameters.AddWithValue("@hastaid",hasta_id);
        MySqlDataReader mdr;
        mdr = cmd.ExecuteReader();

        if (mdr.Read())
        {
            for (int i = 0; i < 20; i++)
            {
                arti = (i + 1).ToString();
                kontrol = mdr.GetString("c_" + arti);
                if (kontrol == "True")
                {
                    ananmezcheck.ananmez_gnlkontrol(i, check);
                }
            }
            yirmibir.Text = mdr.GetString("txt_1");
        }
        connect.Close();
    }

如果我像这样使用它,它可以工作:

string sql = "SELECT * FROM "+mw.db_name+".ananmez_genel Where hasta_id='"+hastaid+"'";

所以数据库没有问题。

1 个答案:

答案 0 :(得分:8)

这部分是问题所在:

Where hasta_id='@hastaid'

没有使用参数 - 正在搜索hasta_id的值恰好是字符串@hastaid的行,因为您已将其放入字符串字面量。你需要摆脱引号:

Where hasta_id=@hastaid

然后它正在查找hasta_id的值与参数@hastaid的值匹配的行。