2015-02-05 4 views
-1

У меня есть эти строки кодов, и я пытаюсь заглянуть в мою базу данных для результатов soundex, но, видимо, это не возвращает никакого результата.Mysql Soundex в формате VB.NET

con.Open() 

    Try 
     Dim query As String 
     query = "SELECT * FROM table_name WHERE column_name LIKE CONCAT('" & "%" & "',SOUNDEX('" & input & "'),'" & "%" & "')" 
     cmd = New MySqlCommand(query, con) 
     adapter.SelectCommand = cmd 
     reader = cmd.ExecuteReader 
     Dim list As New ListViewItem 
     While reader.Read() 
      list = ListView1.Items.Add(dr(1).ToString()) 
      list.SubItems.Add(dr(2).ToString()) 
     End While 
    Catch ex As Exception 
     MessageBox.Show(ex.Message) 
    End Try 

    con.Close() 

Это даже не исключение из MessageBox.

Для обеспечения возврата данных из моей базы данных, прежде чем я сделал запрос выше, я сделал select * from table_name.

Спасибо!

+2

Это будет безумно уязвимым для SQL-инъекций. Это практически попрошайничество, чтобы его взломали. Никогда еще ** НИКОГДА не используйте конкатенацию строк для ввода ввода в sql-запрос. –

+0

Я не думаю, что этого недостаточно. Например: вы проверили, есть ли у вас результаты в вашем db, напрямую подключившись к db и убедитесь, что у вас есть записи? – zealoushacker

+0

Не могли бы вы предоставить образцы данных, ожидаемый результат и значение переменной 'input'? Ваш запрос выглядит твердым (за исключением уязвимости SQL-инъекции), поэтому, вероятно, это не синтаксическая ошибка, и на основе опубликованного кода, который все могут сделать, это проверить синтаксис. –

ответ

1

Я предопределю это, сказав, что я совсем не знаком с MySQL, но алгоритм Soundex обычно возвращает «код», который будет одинаковым для похожих звуковых слов. например

SOUNDEX('Smith') = 'S530' 
SOUNDEX('Smythe') = 'S530' 

Итак, для того, чтобы найти записи, в которых значение column_name звучит как значение input вы хотите что-то вроде этого (прислушаться к предупреждениям о проблемах инъекций SQL и не использовать конкатенацию, как показано ниже!):

query = "SELECT * FROM table_name WHERE SOUNDEX(column_name) = SOUNDEX('" & input & "')"