繁体   English   中英

插入数据以在sqlite中记录

[英]Inserting data to record in sqlite

我必须制作一个Android应用程序,其中必须使用sqlite存储数据来存储预定义的问题和答案。 我找到了一些教程,每次我们运行该应用程序时都会在其中插入值,但是我必须在程序中插入这些问题和答案才能创建数据库。 有人可以建议我任何指导您如何在表中插入值的教程吗?

我了解您想将问题和答案预先加载到sqlite数据库中。 以下教程将帮助您预加载sqlite数据库...

在Android应用程序中使用自己的SQLite数据库

同样,您会在github中找到许多相同的项目。 一个是Android Survey App

希望这可以帮助。

首先下载sqlite浏览器并打开您的.db文件(理想情况下应位于您的资产文件夹中),然后手动或通过查询将所有记录插入相应的表中。

然后保存该数据库文件,并将该文件复制到项目的资产文件夹中。

然后创建databasehelper类,并使其扩展SQLiteOpenHelper并定义数据库和所有函数以在那获取数据。

如果您还有其他疑问,请告诉我:)

下载sqlite浏览器

DatabaseHelper.java

public class DataBaseHelper extends SQLiteOpenHelper {

// The Android's default system path of your application database.
private static String DB_PATH = "/data/data/com.example.tutionimage/databases/";
private static String DB_NAME = "master_subject.db";
private SQLiteDatabase myDatabase;
private final Context myContext;
private boolean add2;

/**
 * Constructor Takes and keeps a reference of the passed context in order to
 * access to the application assets and resources.
 * 
 * @param context
 */
public DataBaseHelper(Context context) {
    super(context, DB_NAME, null, 1);
    this.myContext = context;
}

/**
 * Creates a empty database on the system and rewrites it with your own
 * database.
 * */
public void createDataBase() throws IOException {
    boolean dbExist = checkDataBase();
    if (dbExist) {
        // do nothing - database already exist
    } else {

        // By calling this method and empty database will be created into
        // the default system path
        // of your application so we are gonna be able to overwrite that
        // database with our database.
        this.getReadableDatabase();
        try {
            copyDataBase();
        } catch (IOException e) {
            throw new Error("Error copying database");
        }
    }
}

/**
 * Check if the database already exist to avoid re-copying the file each
 * time you open the application.
 * 
 * @return true if it exists, false if it doesn't
 */
private boolean checkDataBase() {
    SQLiteDatabase checkDB = null;
    try {
        String myPath = DB_PATH + DB_NAME;
        checkDB = SQLiteDatabase.openDatabase(myPath, null,
                SQLiteDatabase.OPEN_READONLY);
    } catch (SQLiteException e) {
        // database does't exist yet.
    }
    if (checkDB != null) {
        checkDB.close();
    }
    return checkDB != null ? true : false;
}

/**
 * Copies your database from your local assets-folder to the just created
 * empty database in the system folder, from where it can be accessed and
 * handled. This is done by transfering bytestream.
 * */
private void copyDataBase() throws IOException {
    // Open your local db as the input stream
    InputStream myInput = myContext.getAssets().open(DB_NAME);
    // Path to the just created empty db
    String outFileName = DB_PATH + DB_NAME;
    // Open the empty db as the output stream
    OutputStream myOutput = new FileOutputStream(outFileName);
    // transfer bytes from the inputfile to the outputfile
    byte[] buffer = new byte[1024];
    int length;
    while ((length = myInput.read(buffer)) > 0) {
        myOutput.write(buffer, 0, length);
    }
    // Close the streams
    myOutput.flush();
    myOutput.close();
    myInput.close();

    // Toast.makeText(myContext, "Copy Done", 300).show();
}

public void openDataBase() throws SQLException {
    // Open the database
    String myPath = DB_PATH + DB_NAME;
    myDatabase = SQLiteDatabase.openDatabase(myPath, null,
            SQLiteDatabase.OPEN_READWRITE);

}

@Override
public synchronized void close() {
    if (myDatabase != null)
        myDatabase.close();
    super.close();
}

@Override
public void onCreate(SQLiteDatabase db) {

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // Add your public helper methods to access and get content from the
    // database.
    // You could return cursors by doing "return myDatabase.query(....)" so
    // it'd be easy
    // to you to create adapters for your views.
}

//Insert Title into database
public long insertTitle(String sem, String subject,String jee, String chp, String marks, String time) {

    ContentValues initialValues = new ContentValues();

    initialValues.put("sem", sem);
    initialValues.put("subject", subject);
    initialValues.put("jee_flag", jee);
    initialValues.put("chapter", chp);
    initialValues.put("marks", marks);
    initialValues.put("time", time);

    return myDatabase.insert("testdata", null, initialValues);
}

//Fetching data from the database
public Cursor getTestData() throws SQLException{

    Cursor cursor = null;
    String queryString = "";


        if(NewStartPanel.queryString.split("-")[2].equalsIgnoreCase("n")){

            queryString = "select * from testdata where jee_flag='n' order by id desc";

        }

        else if(NewStartPanel.queryString.split("-")[2].equalsIgnoreCase("y")){

            queryString = "select * from testdata where jee_flag='y' order by id desc";
        }

        System.out.println("Query String:................  "+queryString);
        cursor = myDatabase.rawQuery(queryString, null);

    //  cursor.moveToFirst();

        System.out.println("cursor count of testdata is:"+cursor.getCount());


    return cursor;

}

TestOrReport.java

    public class TestOrReport extends Activity implements OnClickListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.test_or_report);

    // set resources

    //Interacting with database

    DataBaseHelper dataBaseHelper =new DataBaseHelper(this);
    System.out.println("Before open db");
    dataBaseHelper.openDataBase();

    System.out.println("After open db");
    Cursor mCursor = dataBaseHelper.getTestData();

    System.out.println("@@ total rows :"+mCursor.getCount());


    // Then you can iterate through cursor and get those data in arraylist or whatever collection you want to
    }

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM