2016-07-10 10 views
1

通常、この問題が発生した場合、引用符がないためです。しかし、この列はINTEGERで、整数値を入れようとしています。しかし、このエラーがポップアップ表示されます:SQLiteException:そのような列がありません:1(コード1):

android.database.sqlite.SQLiteException: no such column: 1 (code 1): , while compiling: INSERT INTO Artista (id, nome) VALUES (1, '19')

私のコードを:
origem.txt:http://pastebin.com/Vk2wHnm5
アルティスタ

String CREATE_TABLE_ORIGEM = 
      "CREATE TABLE Origem" + 
      "(" + 
       "id INTEGER PRIMARY KEY, " + 
       "nome TEXT" + 
      ")"; 

    String CREATE_TABLE_ARTISTA = 
      "CREATE TABLE Artista" + 
      "(" + 
       "id INTEGER PRIMARY KEY, " + 
       "nome TEXT" + 
      ")"; 

    db.execSQL(CREATE_TABLE_ORIGEM); 
    db.execSQL(CREATE_TABLE_ARTISTA); 

    String INSERT_ORIGEM = "INSERT INTO Origem (id, nome)"; 
    String INSERT_ARTISTA = "INSERT INTO Artista (id, nome)"; 

    String line; 
    try{ 
     BufferedReader reader = new BufferedReader(new InputStreamReader(myContext.getAssets().open("origem.txt"), "UTF-8")); 
     try { 
      while ((line = reader.readLine()) != null) 
       db.execSQL(INSERT_ORIGEM + " VALUES (" + line + ")"); 
     } catch(Exception e) { 
      throw new RuntimeException(e); 
     } finally { 
      reader.close(); 
     } 

     reader = new BufferedReader(new InputStreamReader(myContext.getAssets().open("artista.txt"), "UTF-8")); 
     try { 
      while ((line = reader.readLine()) != null) 
       db.execSQL(INSERT_ARTISTA + " VALUES (" + line + ")"); 
     } catch(Exception e) { 
      throw new RuntimeException(e); 
     } finally { 
      reader.close(); 
     } 
    } catch (Exception e) { 
     throw new RuntimeException(e); 
    } 

そして、それらは私がテーブルを移入するために使用していtxtsです。 txt:http://pastebin.com/wfWSbvfR

面白いことです:テーブルの原型は同じフォーマットですが、私はそれにエラーはありません。

答えて

1

テキストファイルには、最初に目に見えない制御文字(おそらくUTF-8バイトのオーダーマーク)が含まれています。それを除く。

+0

実際には、読者が何らかの形で挿入したUTF-8バイトオーダーでした。私はファイルに余分な行を追加し、データベースに要素を挿入する前にreadLine()を最初に呼び出しました – Lucas

0

私は誰かに似たような問題を出して助けてくれました。 check my answerを参照し、提案が役立つかどうかを確認してください。要するに

あなたが時間をかけてDDLの変更を行った場合、あなたは実現よりも、スキーマの古いバージョンで作業することができる:あなたは、DB経由のコピーをプルダウンすることができた場合

  • DDMSは、スキーマを検査し、または
  • のtry削除し、確保するためにゼロからアプリを再インストールするには、あなたは

希望これは、何らかの方法で助けスキーマの最新バージョンを持っています。

-1

AVDまたはリアルデバイスから直接アプリデータを消去して、テーブルを「更新」することができます。

  • 設定 - >アプリ - >アプリ - >ストレージ - >データのクリアに移動します。
関連する問題