另一个sql查询语句

时间:2009-06-17 09:16:37

标签: c# sql

好的,非常感谢所有帮助我的人,但现在我还有另外一个问题,我希望这个说法也正确

if (byNametextBox.Text != null && byBuildingtextBox.Text !=null && seTextBoxPublic1.Text == null)
{
    da = new SqlDataAdapter("SELECT * FROM Students WHERE name='" +     byNametextBox.Text +"and [buil-id]='"+byBuildingtextBox.Text+ "'", MyConn);

}

我想从同一个表中选择两个条件 请

5 个答案:

答案 0 :(得分:2)

请使用参数!如果由于某种原因你反对他们,这应该有效:

string strStatement = String.Format("SELECT * FROM Students WHERE [name] = '{0}' AND [buil-id] = '{1}'", byNametextBox.Text, byBuildingtextBox.Text);
da = new SqlDataAdapter(strStatement, MyConn);

答案 1 :(得分:1)

如果在SQL查询中使用参数,则更安全。

答案 2 :(得分:1)

我想你应该用2个参数创建一个SqlCommand。 您在此处发布的代码对SQL注入攻击不安全。

请遵循:

http://msdn.microsoft.com/en-us/library/ms161953.aspx

答案 3 :(得分:1)

要回答您的问题,您的代码会创建SQL:

SELECT * FROM Students WHERE name='NAMEand [buil-id]='ID'

应该是

SELECT * FROM Students WHERE name='NAME' and [buil-id]='ID'

答案 4 :(得分:0)

使用parameterized查询来阻止sql注入,如果你想填充数据表,还可以使用一些额外的代码。

SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Students WHERE name = @byName and [buil-id]= @byBuilding " , MyConn)
                           DataTable dt= new DataTable();
                            da.SelectCommand.Parameters.AddWithValue("@byName", byNametextBox.Text); 
                            da.SelectCommand.Parameters.AddWithValue("@byBuilding", byBuildingtextBox.Text);
                           da.Fill(dt);