2013-08-25 2 views
0

Я получил эту ошибку, когда хочу попытаться проверить доступность имени пользователя, которое есть в базе данных, или нет, ошибка говорит: «Строка ввода не была в правильном формате».Проверить наличие ошибки в имени пользователя

Вот код:

private void CheckUsername() 
{ 
OleDbConnection conn = new OleDbConnection(); 

conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\Archives\Projects\Program\Sell System\Sell System\App_Data\db1.accdb"; 

conn.Open(); 

OleDbCommand cmd = new OleDbCommand("SELECT [Username] FROM [Member], conn); 

cmd.Parameters.Add("Username", System.Data.OleDb.OleDbType.VarChar); 
cmd.Parameters["Username"].Value = this.textBox1.Text; 

int count = Convert.ToInt32(cmd.ExecuteScalar()); 

if (count != 0) 
{ 
System.Media.SoundPlayer sound = new System.Media.SoundPlayer(@"C:\Windows\Media\Windows Notify.wav"); 
sound.Play(); 
MessageBox.Show("Username already exists! Please use another username", "Warning"); 
} 

else 
{ 
System.Media.SoundPlayer sound = new System.Media.SoundPlayer(@"C:\Windows\Media\Windows Notify.wav"); 
sound.Play(); 
MessageBox.Show("Username is not exists!", "Congratulations"); 
} 
} 

Ошибка указал в: int count = Convert.ToInt32(cmd.ExecuteScalar()); и ошибка говорит: «строка ввода не был в правильном формате»

Заранее спасибо!

+0

Пожалуйста начать использовать параметризованные запросы. Этот подход представляет собой SQL-инъекцию, ожидающая события – TGH

+0

Является ли имя пользователя целочисленным? – dcaswell

+0

@TGH: Спасибо, я сделаю это! – Reinhardt

ответ

2

Ну сначала я хотел бы дать вам совет по использованию параметров в запросах, во-вторых, я думаю, что вы имели в виду, чтобы написать COUNT() в вашем SQL:

OleDbCommand cmd = new OleDbCommand("SELECT COUNT([Username]) FROM [Member] WHERE [Username] = ?", conn); 
cmd.Parameters.Add(textBox1.Text); 
+1

решена. Благодаря! – Reinhardt

+0

@Fuhans, рад это услышать, приятель, удачи :) –

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