这是一个真正的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)为空 我试过的是什么呢?
答案 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);