C# net可以';我不能从我的数据库中读取数据

C# net可以';我不能从我的数据库中读取数据,c#,sql,database,ado.net,connection-string,C#,Sql,Database,Ado.net,Connection String,这真是个棘手的问题,但我马上就要发疯了。 我试图从我的本地数据库中读取数据,但它什么也没给我。 代码如下: protected void readBtn2_Click(object sender, EventArgs e) { string ConnString = "server=localhost; Trusted_Connection=yes; database=expreimentalDB"; string SqlString = ("SELECT * FROM tb

这真是个棘手的问题,但我马上就要发疯了。 我试图从我的本地数据库中读取数据,但它什么也没给我。 代码如下:

protected void readBtn2_Click(object sender, EventArgs e)
{
    string ConnString = "server=localhost; Trusted_Connection=yes; database=expreimentalDB";

    string SqlString  = ("SELECT * FROM tblCity WHERE city = '@city'");

    using (SqlConnection conn = new SqlConnection(ConnString))
    {
        using (SqlCommand cmd = new SqlCommand(SqlString, conn))
        {
            cmd.CommandType = CommandType.Text;
            cmd.Parameters.AddWithValue("city", cityTB.Text);

            conn.Open();
            using (SqlDataReader reader = cmd.ExecuteReader())
            {
                GridView1.DataSource = reader;
                GridView1.DataBind();
            }
        }
    }
}
connectionstring应该可以工作(因为如果我在字符串中重命名数据库部分,它会崩溃)

sql正在工作(在sql管理器中试用)

读卡器(SqlDataReader)为空
我还没有试过的是什么?

您需要在查询中删除@city周围的单引号,使其成为

string SqlString  = "SELECT * FROM tblCity WHERE city = @city";
然后

cmd.Parameters.AddWithValue("city", cityTB.Text);
需要改成

cmd.Parameters.AddWithValue("@city", cityTB.Text);

您需要在查询中删除@city周围的单引号,以便

string SqlString  = "SELECT * FROM tblCity WHERE city = @city";
然后

cmd.Parameters.AddWithValue("city", cityTB.Text);
需要改成

cmd.Parameters.AddWithValue("@city", cityTB.Text);

我不太确定,但是在将参数添加到命令中时,您不应该在参数名称前面加@号吗?像这样:

cmd.Parameters.AddWithValue("@city", cityTB.Text);

我不太确定,但是在将参数添加到命令中时,您不应该在参数名称前面加@号吗?像这样:

cmd.Parameters.AddWithValue("@city", cityTB.Text);
当然,这很容易(有点尴尬)。非常感谢你,先生!当然,这很容易(有点尴尬)。非常感谢你,先生!