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

挿入中のデータ型の不一致(コード20)

    あなたの問題は列の順序にある​​と思います。最も重要なのは、ROWID列のエイリアス(この場合は Id )の制限です。 列( Id INTEGER PRIMARY KEY AUTOINCREMENT Idを定義します ROWID列のエイリアスとして

    • 他の列は次のように任意の値を格納できることに注意してください:-
      • INTEGER PRIMARYKEY列を除く、SQLiteバージョン3データベースの任意の列を使用して、任意のストレージクラスの値を格納できます。

      • SQLiteバージョン3のデータ型

    このような列は整数値のみを格納できます。 String sql = "INSERT INTO PHOTO VALUES(NULL,?,?,?,?)"; 次のように値を挿入することと同じです:-

    • 名前にNULL 列
    • latに渡された名前 列
    • lat、渡されたとおり、 lon
    • lon、渡されたとおり、画像
    • Id列に渡された画像( bye [] Id列には保存できません)

    これを修正するには、列名を指定するか、列を定義された順序に一致するように列を並べ替えます(前者の方がおそらくより良い方法です)。

    そのため、次のいずれかで問題が解決するはずです:-

    String sql = "INSERT INTO PHOTO (Id, name, lat, lon, image) VALUES(NULL,?,?,?,?)";
    

    または:-

    String sql = "INSERT INTO PHOTO VALUES(?,?,?,?,NULL)";
    



    1. SQLServerで挿入の順序を維持する方法

    2. WHERE句にパラメータ化された値が含まれている場合にSQLServerがインデックスシークの代わりにインデックススキャンを使用するのはなぜですか

    3. MS Accessの破損パート1:一般的な原因

    4. RowDataPacketオブジェクトにアクセスする方法