1

私はこれを理解するのに非常に長い時間を費やしましたが、問題を解決できないようです. MySql と Visual Basic を使用しています。

select ステートメントを使用して必要な変数を取得し、データ リーダーを使用してループし、変数を (文字列に) 取得し、最後にこれらをフォームで使用しているテキスト ラベルに設定します。これについては正しい手順に従っていると確信していますが、結果が返されないようです。

誰かが私を助けることができれば、私は非常に感謝しています. 私が持っているコードは以下です。

    lblName.Text = Form1.topicName

    MyConnString = "Database=case management system;Data Source=localhost;User Id=root;Password="abc"
    Dim MySqlConn As New MySqlConnection(MyConnString)
    Dim MySelectQuery As String = "SELECT topic_id, topic_name, description, useful_links, employee_id, date "             
       & "FROM knowledge_base "
       & "WHERE topic_name = '" & lblName.Text & "'"
    Dim myCommand As New MySqlCommand(MySelectQuery)
    myCommand.Connection = MySqlConn
    MySqlConn.Open()
    myCommand.ExecuteNonQuery()
    mydata = myCommand.ExecuteReader
    While mydata.Read()
        labelDescription.Text = mydata.Item("description").ToString
        labelLinks.Text = mydata.Item("useful_links").ToString
    End While
    mydata.Close()
    myCommand.Connection.Close()
    MySqlConn.Close()
4

1 に答える 1

1

を含む行を削除しmyCommand.ExecuteNonQuery()ます。あなたはクエリをやっています!

また、ラベル (説明とリンク) には、返された最後の行の最後のデータのみが含まれます。

テキスト入力を SQL コマンドに直接追加すると、SQL インジェクション攻撃が可能になります。SQL パラメータを使用する必要があります。http://www.dotnetperls.com/sqlparameterを参照してください

于 2013-01-22T19:09:26.460 に答える