2016-05-08 3 views
0

Это мой код:Извлечение данных из таблицы базы данных с помощью DataGridView

Properties.Settings.Default.In_OutConnectionString 

c.Open(); 
// 2 
// Create new DataAdapter 
string textboxValue1 = textBox1.Text.Trim(); 
string textboxValue2 = textBox2.Text.Trim(); 
using (SqlDataAdapter a = new SqlDataAdapter("SELECT * FROM People_Tracking WHERE Enter_Exit_Time >='textboxValue1' AND Enter_Exit_Time <='textboxValue2'", c)) 
{ 
    // 3 
    // Use DataAdapter to fill DataTable 
    DataTable t = new DataTable(); 
    a.Fill(t); 
    // 4 
    // Render data onto the screen 
    dataGridView1.DataSource = t; 
} 

У меня есть окна формы приложения, где я буду вводить запуск даты-времени и даты окончания времени, чтобы показать результат в таблице, но всякий раз, когда я запускаю, у меня есть следующая ошибка: я использую визуальную студию 2015. Он работает только тогда, когда я использую время даты непосредственно в запросе вместо текста коробков

error: "An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll Additional information: Conversion failed when converting date and/or time from character string."

ответ

1

Во-первых, ваш синтаксис в запросе неверно: Enter_Exit_Time >='textboxValue1' AND Enter_Exit_Time <='textboxValue2', вы отправляете на запросе название textboxValue вместо его стоимости.

Он генерирует ошибку, потому что вы пытаетесь отправить текст в поле DateTime , что SQL не понимает (согласно сообщению об ошибке).

Я совет вам использовать Parameter использовать SqlDbType.DateTime, а затем передать DateTime непосредственно к параметру, а также избегать инъекции SQL, например:

c.Open(); 
DateTime startDateTime = Convert.ToDateTime(textBox1.Text); 
DateTime endDateTime = Convert.ToDateTime(textBox2.Text); 
string query = "SELECT * FROM People_Tracking WHERE Enter_Exit_Time BETWEEN @startDateTime AND @endDateTime ;"; 
SqlCommand cmd = new SqlCommand(query, c); 
cmd.Parameters.Add("@startDateTime", SqlDbType.DateTime).Value = startDateTime; 
cmd.Parameters.Add("@endDateTime", SqlDbType.DateTime).Value = endDateTime; 
SqlDataAdapter adapter = new SqlDataAdapter(cmd); 
DataTable t = new DataTable(); 
adapter.Fill(t); 
dataGridView1.DataSource = t; 
+0

Огромное спасибо Это хорошо работает для меня!. Да благословит вас Аллах ... –

1

Я думаю, что проблема ваше определение вами переменным в базе данных она должна быть NVARCHAR() вместо полукокса() , Используйте точку останова в вас код, чтобы узнать, что ваши значения TextBox плюс на некотором пространстве или не

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