设置两个权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
MainActivity.java:
package com.miao.filestrore;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import java.io.File;
public class MainActivity extends AppCompatActivity {
private SQLiteDatabase db;
private int i = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
File sdcardPath = Environment.getExternalStorageDirectory();
db = SQLiteDatabase.openOrCreateDatabase(sdcardPath.getAbsoluteFile()+"/johnYu.db",null);
}
public void create(View view) {
String sql = "create table users(_id integer primary key autoincrement,uname text)";
db.execSQL(sql);
}
public void insert(View view) {
try{
String sql = "insert into users (uname) values(?)";
db.beginTransaction();
db.execSQL(sql,new Object[]{"jack..."+i++});
db.setTransactionSuccessful();
}
catch (Exception e){
Log.i("miao","########..Exception..#########");
}
finally {
db.endTransaction();
}
}
public void query(View view) {
String sql = "select _id,uname from users where _id>?";
Cursor c = db.rawQuery(sql, new String[]{"2"});
while(c.moveToNext()){
Log.i("miao",c.getString(0)+"->"+c.getString(c.getColumnIndex("uname")));
}
}
}
注意: 上面的程序有一个缺点,就是只能create()一次,如果点击两次创建数据库,Android系统就会退出程序。而实际上,一个程序,只是一开始创建数据库,之后就不再创建数据库了,这时,我们可以用SQLiteOpenHelper类来实现只是第一次的时候创建数据库。下面来看一下具体代码:
MySQLiteHelper.java:
package com.miao.filestrore;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
/**
* Created by Miao on 2016/3/24.
*/
public class MySQLiteHelper extends SQLiteOpenHelper {
public MySQLiteHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table users(_id integer primary key autoincrement,uname text)";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.i("miao",oldVersion + "...." + newVersion);
}
}
MainActivity.java:
package com.miao.filestrore;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import java.io.File;
public class MainActivity extends AppCompatActivity {
private SQLiteDatabase db;
private SQLiteOpenHelper helper;
private int i = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
File sdcardPath = Environment.getExternalStorageDirectory();
helper = new MySQLiteHelper(this,sdcardPath.getAbsoluteFile()+"/johnYu.db",null,1);
helper.getWritableDatabase();
//db = SQLiteDatabase.openOrCreateDatabase(sdcardPath.getAbsoluteFile()+"/johnYu.db",null);
}
// 把创建数据库的代码放到MySQLiteHelper类里面:
// public void create(View view) {
// String sql = "create table users(_id integer primary key autoincrement,uname text)";
// db.execSQL(sql);
// }
public void insert(View view) {
try{
String sql = "insert into users (uname) values(?)";
db.beginTransaction();
db.execSQL(sql, new Object[]{"jack..." + i++});
db.setTransactionSuccessful();
}
catch (Exception e){
Log.i("miao","########..Exception..#########");
}
finally {
db.endTransaction();
}
}
public void query(View view) {
String sql = "select _id,uname from users where _id>?";
Cursor c = db.rawQuery(sql, new String[]{"2"});
while(c.moveToNext()){
Log.i("miao",c.getString(0)+"->"+c.getString(c.getColumnIndex("uname")));
}
}
}