0

这是一个真正的菜鸟问题,但我很快就会撕裂我的头发。我试图从我的本地数据库中读取,但它什么也没给我。这是代码:

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();
            }
        }
    }
}

连接字符串应该可以工作(因为如果我重命名字符串中的数据库部分,它会崩溃)。

sql 正在工作(在 sql manager 中尝试过)

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

4

2 回答 2

4

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

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

接着

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

需要改为

cmd.Parameters.AddWithValue("@city", cityTB.Text);
于 2013-05-21T19:01:00.480 回答
1

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

cmd.Parameters.AddWithValue("@city", cityTB.Text);
于 2013-05-21T19:03:47.880 回答