2009-06-17 3 views
1

ок спасибо большое за все, кто помогает мне, но теперь у меня есть другая проблема, я хочу, чтобы это утверждение правильно идругой 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); 

} 

я хочу, чтобы выбрать из той же таблицы с двумя условием пожалуйста

+11

Do * not * build строки запросов, подобные этому. Используйте параметризованные запросы, иначе вы широко открыты для атак SQL-инъекций. –

ответ

1

Лучше для обеспечения безопасности, если вы используете параметры в своем SQL-запросе.

1

Предположим, вы должны создать SqlCommand с двумя параметрами. Код, который вы разместили здесь, не безопасен для атак SQL Injection.

Пожалуйста, следуйте:

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

1

Чтобы ответить на ваш вопрос, тем не менее, ваш код создает SQL:

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

должен быть

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

Пожалуйста, используйте параметры! Если по каким-то причинам вы против них, это должно работать:

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

спасибо вам большое – 2009-06-17 09:51:49

+0

Это не параметры. Вы все еще создаете строку, это почти то же самое. – Kobi

+0

Да, Коби, но, как я сказал, если по какой-то причине он ПРОТИВ использования параметров, код, который я написал, будет работать (его исходный код был отформатирован неправильно и не будет). –

0

Используйте parameterized запрос для предотвращения SQL-инъекции, также здесь некоторые дополнительные коды, если вы хотите, чтобы заполнить DataTable.

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); 
Смежные вопросы