此代码显示错误:
媒体'
附近的语法不正确
这是什么意思?我在哪里弄错了?
if (!IsPostBack)
{
if (Request.QueryString["sub"] != null)
{
SqlDataAdapter da = new SqlDataAdapter(
"select * from entry_table Where sub=" + Request.QueryString["sub"],
ConfigurationManager.ConnectionStrings["cozmotestConnectionString"].ConnectionString);
DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count > 0)
{
Label1.Text = dt.Rows[0]["sub"].ToString();
Label2.Text = dt.Rows[0]["body"].ToString();
}
}
}
<div style=" padding-bottom:10px"><h1><asp:Label Font-Bold="true" ID="Label1" runat="server" Text="Label"></asp:Label></h1></div>
<div><asp:Label ID="Label2" runat="server" Text="Label"></asp:Label></div>
答案 0 :(得分:3)
由于您已将问题标记为nvarchar,因此我认为您的sub
列为nvarchar
。
这就是为什么你需要使用单引号和它的值。等;
..sub = '" + Request.QueryString["sub"] + "'"..
更重要的是,您应该始终使用parameterized queries。这种字符串连接对SQL Injection攻击开放。
使用using
statement来处理您的SqlConnection
,SqlCommand
和SqlDataAdapter
。
using(SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["cozmotestConnectionString"].ConnectionString))
using(SqlCommand cmd = con.CreateCommand())
{
cmd.CommandText = "select * from entry_table Where sub = @sub";
cmd.Parameters.Add("@sub", SqlDbType.NVarChar).Value = Request.QueryString["sub"];
using(SqlDataAdapter da = new SqlDataAdapter(cmd, con))
{
DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count > 0)
{
Label1.Text = dt.Rows[0]["sub"].ToString();
Label2.Text = dt.Rows[0]["body"].ToString();
}
}
}
答案 1 :(得分:0)
您可能需要在where子句中使用单引号。
SqlDataAdapter da = new SqlDataAdapter("select * from entry_table Where sub='" + Request.QueryString["sub"] + "'", ConfigurationManager.ConnectionStrings["cozmotestConnectionString"].ConnectionString);
虽然,我强烈建议您使用参数化查询来避免SQL注入攻击
答案 2 :(得分:0)
做这样的事情,它可以帮助你解决这个问题,
string str = Request.QueryString["sub"];
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["cozmotestConnectionString"].ConnectionString);
SqlDataAdapter da = new SqlDataAdapter(
"select * from entry_table Where sub='"+str+"'",con)
//Your remaining parts will come here
请让我知道结果。