ado.net无法从我的数据库中读取

时间:2013-05-21 18:54:44

标签: c# sql database ado.net connection-string

这是一个真正的noob问题,但我很快就会撕裂我的头发。 我试图从我的本地数据库中读取但它没有给我任何东西。 这是代码:

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 manager中试过)

reader(SqlDataReader)为空 我试过的是什么呢?

2 个答案:

答案 0 :(得分:4)

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

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

然后

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

需要更改为

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

答案 1 :(得分:1)

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

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