0

皆さん、今晩は。私はやや困惑している問題に遭遇しました。Access から MySQL に変換していますが、MySQL クエリの構文の一部が異なるようです。私がやっていることは、オペレーターが「クライアント」テーブルのレコードから入力された「コンボボックス」からクライアントを選択することです。問題なくできました。ユーザーがクライアントを選択すると、別のコンボボックスにテーブル「Lines」のデータが取り込まれます。テーブル「回線」には、クライアントと回線の 2 つの列があります。各行 WHERE Client = LEXAR を取得しようとしていました。考えやアイデアはありますか?

私はそれが次のようなものになると考えました:

"SELECT * FROM Lines WHERE Client=LEXAR"

or

"SELECT * FROM Lines WHERE(client = @LEXAR)"

or

"SELECT * FROM Lines WHERE(client = '@LEXAR')"

or

"SELECT * FROM Lines WHERE client LIKE LEXAR)"

or



"SELECT * FROM ``Lines``WHERE ``Client``='LEXAR')"

or

"SELECT * FROM Lines WHERE Client ='LEXAR')"

しかし、どれも機能しません。これが私のコードです:

Dim sql As MySqlCommand = New MySqlCommand("SELECT * FROM Lines WHERE(client = @LEXAR)", con)
        Dim dt As DataTable = New DataTable()

        Dim DataAdapter1 As MySqlDataAdapter = New MySqlDataAdapter(sql)
        DataAdapter1.Fill(dt)


        If dt.Rows.Count > 0 Then
            ComboBox1.DataSource = dt
            ComboBox1.DisplayMember = "Line"
        End If
        con.Close()

エラーは次のとおりです。

Fatal error encountered during command execution.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Lines WHERE client =  LEXAR)' at line 1

完全なコード:

Imports MySql.Data.MySqlClient
Imports System.Net
Imports System.IO

Dim con As MySqlConnection = New MySqlConnection("Data Source=xxx.xxx.xxx.xxx;Database=productiontrackerpro;User ID=xxxxxxxx;Password=xxxxxxxx;")


Public Sub LoadClients()

        Dim sql As MySqlCommand = New MySqlCommand("SELECT * FROM Lines WHERE Client = 'LEXAR')", con)
        Dim dt As DataTable = New DataTable()

        Dim DataAdapter1 As MySqlDataAdapter = New MySqlDataAdapter(sql)
        DataAdapter1.Fill(dt)


        If dt.Rows.Count > 0 Then
            ComboBox1.DataSource = dt
            ComboBox1.DisplayMember = "Line"
        End If
        con.Close()




    End Sub

エラー:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Lines WHERE Client = 'LEXAR')' at line 1
4

1 に答える 1

1

あなたの最初のアプローチはほぼ正しかった。用語を一重引用符で囲むだけです。

"SELECT * FROM `Lines` WHERE `Client` = 'LEXAR';"

パラメータ (WHERE somefield = @value) を使用する場合は、http://dev.mysql.com/doc/refman/5.0/en/connector-net-programming-prepared.html を参照してください

于 2013-07-11T22:17:23.403 に答える