2013-06-19 3 views
-5

У меня есть один список с «первым именем» и «последним», хранящимся в нем из базы данных.Выберите значения базы данных из текстового поля

Как написать мой запрос для извлечения информации из базы данных, выбрав индекс.

У меня есть

"Select * from table where firstname= '"+listbox1.Text+"' and lastname= '"+listbox1.Text+"' " 

не работают, хотя

+0

Что не работает? –

+0

Не могли бы вы уточнить свой вопрос, пожалуйста. Первое имя и фамилия находятся в вашем «списке» и получены из базы данных, но некоторые детали будут приятными. –

ответ

0

Вот "где" при использовании LINQ к SQL ...

<asp:LinqDataSource 
      ContextTypeName="YourDataContext" 
      TableName="YourTable" 
      ID="DataSource" 
      runat="server" 
      Where="FirstName == @FN"> 
      <WhereParameters> 
       <asp:ControlParameter Name="FN" ControlID="LISTBOX" 
             Type="String" PropertyName="Text" /> 
      </WhereParameters> 
</asp:LinqDataSource> 
1

Что у вас есть выглядит как хороший старт в сторону от уязвимости SQL Injection. Я читал о параметризованных запросах. This is an article, что я чувствую, хорошо понимает концепцию.

В итоге вы будете использовать комбинацию SqlConnection, SqlCommand, SqlParameter и, возможно, нескольких других классов.

1

Два слова (два пути): Parameterized Queries или Prepared Statements. То, что вы называете это, зависит от того, что вы предпочитаете - они имеют в виду то же самое! Преимущества использования и безопасности от их использования.

Я принимаю то, что я прочитал в вашем вопросе, что это то, что у вас есть. Если ваш элемент управления listbox содержит список имен, которые находятся в вашей базе данных, которые содержатся только в Items в вашем listbox.

My interpretation

Это не рекомендуется дизайн, но позволяет сделать его функции без переделки того, что у вас уже есть.

Для SQL Server и C#, код будет выглядеть так:

string commandText = "SELECT * FROM table WHERE firstname = @firstname and lastname = @lastname"; 
using (SqlConnection connection = new SqlConnection(connectionString)) 
{ 
    SqlCommand command = new SqlCommand(commandText, connection); 
    if (listbox1.SelectedItem == null) 
    { 
     // exit since nothing was selected in the listbox to query by 
    } 
    var names = listbox1.SelectedItem.ToString().Split(' '); 
    if (names.Length != 2) 
    { 
     // exit since this is not what we want and will yield unexpected results 
    } 
    string firstName = names[0]; 
    string lastName = names[1]; 
    command.Parameters.AddWithValue("@firstname", firstname); 
    command.Parameters.AddWithValue("@lastname", lastname); 

    // Read information from database... 

} 

Очевидно, что вы можете понять, почему это не целесообразный выбор дизайна, но он будет работать с учетом того, что вы уже создали.

Смежные вопросы