我尝试从datatable
绑定标签我收到此错误
Incorrect syntax near '='.
在这一行
da.Fill(dt);
我的代码:Page_Load
LbLID.Text =this.Page.Request.QueryString["DI"].ToString();
SqlConnection con = new SqlConnection("Data Source=local;Initial Catalog=DB;User
ID=sa;Password="pass);
SqlDataAdapter da = new SqlDataAdapter("select * from Table1 where ID= " +
LbLID.Text.Trim(), con);
System.Data.DataTable dt = new System.Data.DataTable();
da.Fill(dt);
lblS1.Text = dt.Rows[0][4].ToString();
lblS1.DataBind();
答案 0 :(得分:5)
你不能在多行中打破正常的字符串文字,你的结束语也是错误的:
SqlConnection con = new SqlConnection("Data Source=local;Initial Catalog=DB;User ID=sa;Password=pass");
或者使用一个逐字的文字,你可以跨越多行:
SqlConnection con = new SqlConnection(
@"Data Source=local;
Initial Catalog=DB;
User ID=sa;
Password=pass");
也就是说,您的代码容易受到SQL injection攻击。为了您自己,为了您的用户,您真的应该使用参数化查询,而不是像这样连接您的SQL查询。
这是一个简单的例子:
using(var con = new SqlConnection(...))
{
var cmd = new SqlCommand("select * from Table1 where ID = @ID", con);
con.Open();
cmd.Parameters.AddWithValue("@ID", LbLID.Text.Trim());
var da = new SqlDataAdapter(cmd);
var dt = new DataTable();
da.Fill(dt);
lblS1.Text = dt.Rows[0][4].ToString();
lblS1.DataBind();
}
其他一些提示:您应该避免使用select *
查询,因为您的数据库架构可能会更改,这会破坏任何现有代码。最好只选择您感兴趣的列,并简单地调用ExecuteScalar
。
答案 1 :(得分:3)
试试这个:
SqlDataAdapter da = new SqlDataAdapter("select * from Table1 where ID ='" +
LbLID.Text.Trim() + "'", con);
但请注意,这是一个非常糟糕的代码,容易受到sql注入。
所以你应该试试这个:
var com = new SqlCommand("SELECT * FROM Table1 WHERE ID=@id", con);
com.Parameters.AddWithValue("id",LBLID.Text.Trim());
var da = new SqlDataAdapter(com);
或更短:
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Table1 WHERE ID=@id", con);
da.SelectCommand.AddWithValue("id",LBLID.Text.Trim());
答案 2 :(得分:2)
它是一个SQL错误。您没有传递有效的身份证。
这是两件事之一。
选项A:您的ID是一个字符串。在这种情况下..你需要使用单引号:
SqlDataAdapter da = new SqlDataAdapter("select * from Table1 where ID= '" + LbLID.Text.Trim() + "'", con);
选项B:您的LbLId错误了...您正在检查["DI"]
..当我认为它应该是["ID"]
时:
LbLID.Text =this.Page.Request.QueryString["ID"].ToString();
答案 3 :(得分:0)
我在da.Fill()的代码中没有看到任何问题。但我在下面的陈述中看到另一个问题:
SqlConnection con = new SqlConnection("Data Source=local;Initial Catalog=DB;User
ID=sa;Password="pass);
...Password="pass);
- 应该是
...Password=" + pass);
OR
...Password=pass");
我想知道你没有为pass *获得一个未定义的变量错误。