0

我正在为android编写一个应用程序。我需要读取一个 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();
}

此代码未将值输入数据库,操作完成后数据库仍为空。这有什么问题?谢谢。编辑:好的,这是完整的代码:

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

尝试放置this.db.insert(TABLE_CONTACTS, null, values);。因为几个月前我遇到了同样的问题,这就是解决方案。

于 2013-03-26T21:20:18.013 回答
0

而不是 db.insert() ... 使用 db.insertOrThrow(),可能是一些约束错误。

于 2013-03-26T21:21:10.007 回答
0

你的db对象是什么?是SQLiteDatabase db = this.getWriteableDatabase();吗?我已经看到有些人使用getReadAbleDatabase()i 而不是getWriteableDatabase()方法。

于 2013-03-26T21:24:21.590 回答