sql >> データベース >  >> RDS >> Mysql

ADOを介してレコードを作成/編集するときに、インデックス付きのMySQLフィールドが値を保存しない

    MySQL ODBC 5.3 Unicodeドライバーの64ビットバージョン(5.03.04.00)で問題を再現することができました。テーブルの最後の列のタイプがTEXTの場合、ADORecordsetの更新に問題があるようです。 。 useridのインデックスすらありませんでした 同じ結果が得られました。

    考えられる回避策の1つは、ADODB.Commandを使用することです。 次のようなコードを使用して挿入を実行するためのパラメータを使用します:

    Dim oConn As ADODB.Connection
    Dim cmd As ADODB.Command
    
    Set oConn = New ADODB.Connection
    oConn.Open _
            "Driver=MySQL ODBC 5.3 Unicode Driver;" & _
            "SERVER=localhost;" & _
            "UID=root;" & _
            "PWD=whatever;" & _
            "DATABASE=mydb;" & _
            "PORT=3306;" & _
            "DFLT_BIGINT_BIND_STR=1"
    
    Set cmd = New ADODB.Command
    cmd.ActiveConnection = oConn
    cmd.CommandText = _
            "INSERT INTO phplist_user_user_history " & _
            "(`userid`, `ip`, `date`, `Summary`, `Detail`, `systeminfo`) " & _
            "VALUES (?,?,?,?,?,?)"
    cmd.Parameters.Append cmd.CreateParameter("?", adInteger, adParamInput, , 456)
    cmd.Parameters.Append cmd.CreateParameter("?", adVarWChar, adParamInput, 255, "")
    cmd.Parameters.Append cmd.CreateParameter("?", adDBTimeStamp, adParamInput, 255, Now)
    cmd.Parameters.Append cmd.CreateParameter("?", adVarWChar, adParamInput, 255, "cHistory.Subject")
    cmd.Parameters.Append cmd.CreateParameter("?", adLongVarWChar, adParamInput, 2147483647, "cHistory.Body")
    cmd.Parameters.Append cmd.CreateParameter("?", adLongVarWChar, adParamInput, 2147483647, "Automated syncronization process.")
    cmd.Execute
    
    Set cmd = Nothing
    oConn.Close
    Set oConn = Nothing
    

    Access 2010データベースからテストしたところ、問題なく動作しました。



    1. INSERTを機能させることができません

    2. SQLiteの日付から日、月、年を抽出する方法

    3. MySQL-ロシア語の文字が正しく表示されない

    4. org.postgresql.jdbc.PgConnection.createClob()を解決する方法はまだ実装されていません