2013-12-04 4 views
0

У меня есть идея того, что должно быть сделано не совсем точно, как собрать все это вместе. Я пытаюсь искать записи в своих данных, используя текстовое поле. Я бы хотел, чтобы пользователь не знал весь адрес, чтобы иметь возможность вводить часть адреса и все еще возвращать записи. Если я введу полный адрес, тогда запись вернется. Но если я просто вложу первые две буквы и поиск ничего не вернется.Поиск данных в базе данных

Благодаря

Вот что у меня есть:

protected void btnFind_Click(object sender, EventArgs e) 
    { 
     string searchFor = txtFirstName.Text.Trim(); 
     int results = 0; 
     string errorText = "No records found"; 

     OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=H:\Contacts.mdb"); 
     conn.Open(); 

     DataSet ds = new DataSet(); 

     string cmd = "SELECT * FROM Contact WHERE Address LIKE '+searchFor ' "; 

     OleDbDataAdapter da = new OleDbDataAdapter(cmd, conn); 

     da.Fill(ds, "Search"); 

     DataRow[] row; 
     DataRow dr; 

     row = ds.Tables["Search"].Select("Address='" + searchFor + "'"); 
     results = row.Length; 

     if (results > 0) 
     { 
      dr = row[0]; 
      txtFirstName.Text = dr["FirstName"].ToString(); 
      txtLastName.Text = dr["LastName"].ToString(); 
      txtEmail.Text = dr["Email"].ToString(); 
      txtAddress.Text = dr["Address"].ToString(); 
      txtPhone.Text = dr["Phone"].ToString(); 

     } 
     else 
     { 
      lblError.Text = errorText; 
     } 
     conn.Close(); 


    } 

ответ

2

1. вы злоупотребляете одиночные кавычки в запросе. вам нужно обернуть строковые переменные одинарными кавычками.

2. Вы не правильно добавляете параметр в свой запрос. вам нужно закрыть параметр
с конкатенации + оператора

3. вам нужно использовать % для поиска.
пример: если вы хотите найти между вами может использовать % до и после строки поиска

Это

string cmd = "SELECT * FROM Contact WHERE Address LIKE '+searchFor ' "; 

должен быть

string cmd = "SELECT * FROM Contact WHERE Address LIKE '%"+ searchFor +"%'"; 
+0

Я внес изменения, но все тот же результат. Вызов My else и появляется сообщение без записи –

-1

Вы можете попробовать этот код:

string cmd = "SELECT * FROM Contact WHERE Address LIKE '%"+ searchFor +"%'"; 
+0

Я удалим downvote когда код похоже, что он будет компилироваться и работать. –

+0

Не беспокойтесь, приятель. – azisfatoni

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