'必须声明标量变量“ @thisuser”。'

问题描述 投票:-5回答:2

我有此代码,但有一个我无法解决的问题。我想在if条件下访问我的SQL Server表,但一直告诉我必须声明变量@thisuser。谁能帮我吗?

private void btnPersonalInfo_Click(object sender, EventArgs e)
{
    sqlcon.Open();

    string query = "SELECT score1, score2, score3 FROM tblLogin WHERE username = @thisuser";

    SqlCommand sda = new SqlCommand(query, sqlcon);

    SqlDataReader da = sda.ExecuteReader();

    if (thisuser == da.GetValue(1).ToString())
    { 
        while (da.Read())
        {
            MessageBox.Show("Your Personal Info are:  sda.GetValue(3).ToString()");
        }
    }

    sqlcon.Close();
}
c# sql-server
2个回答
0
投票

如果您仅需要从SQL DB中选择值为'thisuser'的用户名,则需要将该值放在单引号之间,因为这是常规的SQL字符串格式。

喜欢这个:

private void btnPersonalInfo_Click(object sender, EventArgs e) 
{ 
     sqlcon.Open(); 

     string query = "SELECT score1, score2, score3 FROM tblLogin WHERE username = 'thisuser'"; 

     SqlCommand sda = new SqlCommand(query, sqlcon); 
     SqlDataReader da = sda.ExecuteReader(); 

     if (thisuser == da.GetValue(1).ToString()) 
     { 
         while (da.Read()) 
         {
              MessageBox.Show("Your Personal Info are: sda.GetValue(3).ToString()"); 
         } 
     } 

     sqlcon.Close();
}

如果您只需要从SQL DB中选择具有在C#代码中声明的值的用户名,则您需要这样编写查询字符串:>

private void btnPersonalInfo_Click(object sender, EventArgs e) 
{ 
     string thisuser = "example";  // example value
     sqlcon.Open(); 

     string query = "SELECT score1,score2,score3 FROM tblLogin WHERE username = '" + thisuser + "'"; 

     SqlCommand sda = new SqlCommand(query, sqlcon); 
     SqlDataReader da = sda.ExecuteReader(); 

     if (thisuser == da.GetValue(1).ToString()) 
     { 
         while (da.Read()) 
         { 
             MessageBox.Show("Your Personal Info are: sda.GetValue(3).ToString()"); 
         } 
     } 
     sqlcon.Close();
}

0
投票

您在内联查询中使用参数,但未传递参数

© www.soinside.com 2019 - 2024. All rights reserved.