zamzam_301 Ответов: 1

Как я могу найти имя (арабский)


у меня есть база данных DB2 я подключаюсь к ней с помощью vb.net все наперстки в порядке
но когда я хочу найти сотрудника по фамилии это не работа
вот код, он работает, если gname.текст ясно показывают, все работник

Что я уже пробовал:

Dim s As String = "SELECT GEMPNO, GNAME, GTERM  FROM qgpl.testz where gname like '% " & gname.Text & " %' ORDER BY RNAME  "
 dim selectCMD As OdbcCommand = New OdbcCommand(s, MyODBCConnection)
  Dim Adapter As OdbcDataAdapter = New OdbcDataAdapter(selectCMD.CommandText, MyODBCConnection)
            Dim ds As DataSet = New DataSet
            ds.Clear()
            Adapter.Fill(ds, "MyTable")
            Dim Row As DataRow
            Dim listItem1 As New ListViewItem()
            For Each Row In ds.Tables(0).Rows
                If Not IsDBNull(Row.Item(0)) Then
                    listItem1 = New ListViewItem(Row.Item(0).trim.ToString)
                Else
                    listItem1 = New ListViewItem("")
                End If
                If Not IsDBNull(Row.Item(1)) Then
                    listItem1.SubItems.Add(Row.Item(1).ToString.Trim)
                Else
                    listItem1.SubItems.Add("")
                End If
                If Not IsDBNull(Row.Item(2)) Then
                    listItem1.SubItems.Add(Row.Item(2).ToString)
                Else
                    listItem1.SubItems.Add("")
                End If
                ListView1.Items.Add(listItem1)
            Next
        Catch ex As Exception
        End Try
        For i As Integer = 0 To ListView1.Items.Count - 1
            If ListView1.Items(i).SubItems(2).Text <> 0 Then
                ListView1.Items(i).BackColor = Color.LightBlue
            Else
                ListView1.Items(i).BackColor = Color.White
            End If
        Next
        MyODBCConnection.Close()
        MyODBCConnection.Dispose()

CHill60

Я считаю, что вы должны явно сказать DB2, что эта строка является UNICODE. Попробуй

Dim s As String = "SELECT GEMPNO, GNAME, GTERM  FROM qgpl.testz where gname like u&@gname ORDER BY RNAME  "
...
selectCMD.Parameters.AddWithValue("@gname", "%" + gname.Text + "%")
...

Если это не сработает, то эта ссылка может оказаться полезной
Понимание преобразования символов универсальной базы данных DB2[^]

zamzam_301

Большое спасибо
это не работает

CHill60

Ну что ж, я попробовал. К сожалению, у меня нет никакого доступа к DB2, чтобы поиграть, поэтому я опубликовал это только в качестве комментария.
Однако эта ссылка может дать вам некоторое представление.

NotPolitcallyCorrect

"это не работает" - это не описание какой-либо проблемы.

Maciej Los

Звучит как ответ на мой вопрос.

1 Ответов

Рейтинг:
7

zamzam_301

- этот код решит мою проблему

Dim s As String = " SELECT EMPNO, NAME FROM lib.файл "
Dim selectCMD As OdbcCommand = New OdbcCommand(s, MyODBCConnection)
- запустите цикл чтения
Дим адаптер как объект odbcdataadapter = новый объект odbcdataadapter(selectCMD.Свойства Commandtext, MyODBCConnection)
Dim ds As DataSet = новый набор данных
ДС.Понятно()
Адаптер.SelectCommand = New OdbcCommand ("SELECT EMPNO, NAME FROM lib.файл, где имя нравится ? ", MyODBCConnection)
Адаптер.Команды selectcommand.Parameters. Add ("@GNAME", Odbc.OdbcType.NVarChar).Value = " % " & gname.Текст
Адаптер.Команды selectcommand.Метод executenonquery()
Адаптер.Fill (ds, " MyTable")
Дим Подряд В Качестве Объекта Datarow
Dim listItem1 как новый ListViewItem()
Для каждой строки в ds.Таблицы (0). Строки