【问题标题】:ado.net can't read from my databaseado.net 无法从我的数据库中读取
【发布时间】:2013-05-21 18:54:43
【问题描述】:

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

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)为空 什么我还没试过?

【问题讨论】:

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


    【解决方案1】:

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

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

    然后

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

    需要改成

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

    【讨论】:

    • 当然,就这么简单(有点尴尬)。非常感谢你最好的先生!
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多