2014-01-02 3 views
0

Я пытаюсь получить данные пользователя из базы данных, чтобы показать их в некоторых текстовых полях; однако, похоже, проблема с моим кодом. Следующее сообщение об ошибке продолжает появляться:ошибка синтаксиса (запятая) в выражении запроса

синтаксической ошибки (запятая) в выражении запроса

Это полный код:

string filePath; 

try 
{ 
    filePath = (Application.StartupPath + ("\\" + DBFile)); 
    connection = new System.Data.OleDb.OleDbConnection((ConnectionString + filePath)); 
    connection.Open(); 
    System.Data.OleDb.OleDbDataReader reader; 
    System.Data.OleDb.OleDbCommand command = new System.Data.OleDb.OleDbCommand(); 
    command.Connection = connection; 

    // ---retrieve user's particulars--- 
    command.CommandText = ("SELECT * FROM Enroll WHERE ID=" + textBox1); 
    reader = command.ExecuteReader(CommandBehavior.CloseConnection); 
    reader.Read(); 

    // ---display user's particulars--- 
    textBox2.Text = reader["SSN"].ToString(); 
    textBox3.Text = reader["FirstName"].ToString(); 
    textBox4.Text = reader["LastName"].ToString(); 
} 

ответ

2

Здесь

command.CommandText = ("SELECT * FROM Enroll WHERE ID=" + textBox1); 

так метод внутренне .ToString назвали бы на textBox1 и ваш CommandText стал бы

SELECT * FROM Enroll WHERE ID=System.Windows.Forms.TextBox, Text: 

Отсюда и ошибка.

То, что вы, вероятно, означает текст в текстовом поле

command.CommandText = ("SELECT * FROM Enroll WHERE ID=" + textBox1.Text); 

Примечание: Вы не должны делать это в первую очередь. Вместо этого вы должны рассмотреть возможность использования параметризованных запросов. Итак, что вы должны делать

SqlCommand cmd = new SqlCommand("SELECT * FROM Enroll WHERE [email protected]"); 
cmd.Parameters.AddWithValue("@ID", textBox1.Text.Trim()); 
+0

Да я буквально забыл добавить «.text» и конец «+ textBox1 ' – Zack

+0

Сделайте, прочитайте мое предложение и в конце. – Ehsan

2

Что об изменении

command.CommandText = ("SELECT * FROM Enroll WHERE ID=" + textBox1); 

в

command.CommandText = ("SELECT * FROM Enroll WHERE ID=" + textBox1.Text); 
0

Это будет более подходящим:

command.CommandText = ("SELECT * FROM Enroll WHERE ID=" + textBox1.text.toString()+""); 
+1

Вызов 'ToString()' на свойства строки кажется Сорта лишними ... –

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