如何在android中的sd卡中保存的文本文件中创建sqlite数据库或表?

JCJ*_*JCJ 2 android

我在SD卡中有文本文件,其中第一行包含表的列名,其余行包含列的值.每行用/ n分隔,每个项用|分隔.通过使用这个我必须在我的数据库中创建一个表.

Mic*_*ang 5

首先,您必须创建数据库和存储来自文本文件的数据的表,如下所示,

public class DatabaseHelper extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "mydatabase.db";    

    /**
     * @param context Application Context
     */
    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, 1);
    }

    /* Called when the database is created for the first time.
     * @see android.database.sqlite.SQLiteOpenHelper#onCreate(android.database.sqlite.SQLiteDatabase)
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE DB_TABLE(_id INTEGER PRIMARY KEY AUTOINCREMENT, content TEXT);");      
    }

    /* Called when the database needs to be upgraded.
     * @see android.database.sqlite.SQLiteOpenHelper#onUpgrade(android.database.sqlite.SQLiteDatabase, int, int)
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.w("DatabaseHelper", "Upgrading database, which will destroy all old data");     
        onCreate(db);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你必须从SD卡读取文本文件并将记录插入到上面创建的表中,

定义两个变量,

   DatabaseHelper databaseHelper;
   SQLiteDatabase db;
Run Code Online (Sandbox Code Playgroud)

在onCreate方法中启动它们,

databaseHelper = new DatabaseHelper(context);
db = databaseHelper.getWritableDatabase();
Run Code Online (Sandbox Code Playgroud)

定义将数据保存到数据库的方法

void saveDataToDB()
{
       File sdcard = Environment.getExternalStorageDirectory();

       //Get the text file
       File file = new File(sdcard,"file.txt");

       //Read text from file
       StringBuilder text = new StringBuilder();

    try {
        BufferedReader br = new BufferedReader(new FileReader(file));
        String line;

        while ((line = br.readLine()) != null) {
            insertRecordToDB(columnName, columnValue);
        }
    }
    catch (IOException e) {
        //You'll need to add proper error handling here
    }
}

void insertRecordToDB(columnName, columnValue)
{       
   ContentValues values = new ContentValues();
   values.put(columnName, columnaValue);

   db.insert(DB_TABLE, null, values);
}
Run Code Online (Sandbox Code Playgroud)