0

私はアンドロイド用のアプリを書いています。txt ファイルを読み取り、データを SQLite ファイルに書き込む必要があります。私はすべてのコードを完成させることができましたが、値をデータベースに挿入する部分が機能していません。私は以下のコードを与えました:

try{
    ContentValues values = new ContentValues();
    values.put(KEY_NAME, firstNumber); // Contact Name
    values.put(KEY_PH_NO, strfinal); // Contact Phone
    // Inserting Row
    db.insert(TABLE_CONTACTS, null, values);
} catch(Exception e) {
    e.printStackTrace();
}

このコードはデータベースに値を入力しておらず、操作が完了した後もデータベースは空のままです。これの何が問題なのですか?ありがとう。編集: OK、ここに完全なコードがあります:

public class DatabaseHandler extends SQLiteOpenHelper {

        // All Static variables
        // Database Version
        private static final int DATABASE_VERSION = 1;

        // Database Name
        private static final String DATABASE_NAME = "feedsmanager.sqlite";

        // Contacts table name
        private static final String TABLE_CONTACTS = "table_to_hold_all_values";

        // Contacts Table Columns names
        private static final String KEY_ID = "id";
        private static final String KEY_NAME = "name";//ctid
        private static final String KEY_PH_NO = "phone_number";//feedname,address;feedname;address etc
        Context ctx;

        public DatabaseHandler(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
            ctx=context;
        }

        // Creating Tables
        @Override
        public void onCreate(SQLiteDatabase db) {

            //Log.d("in onCreate","twitch1");
            String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "("
                    + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
                    + KEY_PH_NO + " TEXT);";

            //Log.d("below createcontacts","twitch1");
            try{
            db.execSQL(CREATE_CONTACTS_TABLE);
            }catch(Exception e){Log.d("create went wrong: "+e,"twitch11");}
            //Log.d("below db.execsql","twitch1");
            populate(db);
    }

            void populate(SQLiteDatabase dbs){
            String line="";


            try{
            InputStream is = ctx.getAssets().open("feedtitlesandaddresses.txt");
            InputStreamReader iz=new InputStreamReader(is);
            BufferedReader br = new BufferedReader(iz);
            //SQLiteDatabase dbs = this.getWritableDatabase();
            while((line=br.readLine())!=null) {
                //Log.d("fcked here6","twitch1");
                StringTokenizer stringTokenizer = new StringTokenizer(line, "<");

                String firstNumber="";
                String strfinal="";
                  firstNumber = (String) stringTokenizer.nextElement();
                  **//Calculations to give values to firstNumber and strfinal excluded

                  ContentValues values = new ContentValues();

                  values.put(KEY_NAME, firstNumber); // Contact Name
                  values.put(KEY_PH_NO, strfinal); // Contact Phone
                  // Inserting Row

                  dbs.insert(TABLE_CONTACTS, null, values);}

                dbs.close();}catch(Exception e){Log.d("yeah error is"+e,"twitch12");}
        }}
4

3 に答える 3

0

あなたのdb目的は何ですか?ですかSQLiteDatabase db = this.getWriteableDatabase();getReadAbleDatabase()メソッドの代わりに is を使用する人もいますgetWriteableDatabase()

于 2013-03-26T21:24:21.590 に答える
0

配置してみてくださいthis.db.insert(TABLE_CONTACTS, null, values);。私は数ヶ月前に同じ問題を抱えていたので、それが解決策です.

于 2013-03-26T21:20:18.013 に答える
0

db.insert() の代わりに ... db.insertOrThrow() を使用してください。おそらく何らかの制約エラーです。

于 2013-03-26T21:21:10.007 に答える