Android:SQLite使用方法 SQLiteOpenHelper操作 .

本文介绍如何利用SQLiteOpenHelper类创建和管理SQLite数据库,包括数据库的创建、版本升级及基本的CRUD操作。
    1. 程序内使用SQLite数据库是通过SQLiteOpenHelper进行操作  
    2. 1.       自己写个类继承SQLiteOpenHelper,重写以下3个方法  
    3. public void onCreate(SQLiteDatabase db)   
    4. {//创建数据库时的操作,如建表}   
    5.    
    6. public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)   
    7.        {  
    8.            //版本更新的操作   
    9.        }  
    10. 2.    通过SQLiteOpenHelper的getWritableDatabase()获得一个SQLiteDatabase数据库,以后的操作都是对SQLiteDatabase进行操作。  
    11. 3.       对得到的SQLiteDatabase对象进行增,改,删,查等操作。  
    12. 代码  
    13. package cx.myNote;  
    14.    
    15. import android.content.ContentValues;  
    16. import android.content.Context;  
    17. import android.content.Intent;  
    18. import android.database.Cursor;  
    19. import android.database.sqlite.SQLiteDatabase;  
    20. import android.database.sqlite.SQLiteOpenHelper;  
    21.    
    22. //DBOptions for login   
    23. public class DBOptions {  
    24.        private static final String DB_NAME = "notes.db";  
    25.        private static final String DB_CREATE="create table logininf(name text,pwd text)";  
    26.        public class DBHelper extends SQLiteOpenHelper  
    27.        {  
    28.    
    29.               public DBHelper(Context context) {  
    30.                      super(context,DB_NAME, null1);  
    31.                      }  
    32.    
    33.               @Override  
    34.               public void onCreate(SQLiteDatabase db) {  
    35.                      // TODO Auto-generated method stub  
    36.                      //建表   
    37.                  db.execSQL(DB_CREATE);  
    38.               }  
    39.                 
    40.               @Override  
    41.               public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
    42.                      // TODO Auto-generated method stub  
    43.                      db.execSQL("drop table if exists logininf");  
    44.                      onCreate(db);  
    45.               }  
    46.                 
    47.        }  
    48.        private Context context;  
    49.        private SQLiteDatabase db;  
    50.        private DBHelper dbHelper;  
    51.        public  DBOptions(Context context)  
    52.        {  
    53.               this.context = context;  
    54.               dbHelper = new DBHelper(context);  
    55.               db=dbHelper.getReadableDatabase();  
    56.                 
    57.        }  
    58.   //自己写的方法,对数据库进行操作   
    59.        public String getName()  
    60.        {  
    61.                 
    62.               Cursor cursor = db.rawQuery("select name from logininf"null);  
    63.               cursor.moveToFirst();  
    64.               return cursor.getString(0);       
    65.        }  
    66.        public int changePWD(String oldP,String pwd)  
    67.        {  
    68.               ContentValues values = new ContentValues();  
    69.               values.put("pwd", pwd);  
    70.               return db.update("logininf", values,"pwd="+oldP, null);  
    71.        }  
Line 1366: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: java.lang.IllegalStateException: The file system on the device is in a bad state. WorkManager cannot access the app's internal data store. Line 1367: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: at androidx.work.impl.utils.ForceStopRunnable.run(ForceStopRunnable.java:80) Line 1368: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: at androidx.work.impl.utils.SerialExecutorImpl$Task.run(SerialExecutorImpl.java:3) Line 1369: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1156) Line 1370: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:651) Line 1371: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: at java.lang.Thread.run(Thread.java:1119) Line 1372: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: Caused by: android.database.sqlite.SQLiteCantOpenDatabaseException: Cannot open database '/data/user/0/com.kiloo.subwaysurf/no_backup/androidx.work.workdb' with flags 0x30000000: Directory /data/user/0/com.kiloo.subwaysurf/no_backup doesn't exist Line 1373: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:289) Line 1374: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:232) Line 1375: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:535) Line 1376: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:222) Line 1377: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:214) Line 1378: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:1163) Line 1379: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:1143) Line 1380: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1007) Line 1381: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:996) Line 1382: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:373) Line 1383: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:316) Line 1384: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableOrReadableDatabase(FrameworkSQLiteOpenHelper.kt:5) Line 1385: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.innerGetDatabase(FrameworkSQLiteOpenHelper.kt:132) Line 1386: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getSupportDatabase(FrameworkSQLiteOpenHelper.kt:22) Line 1387: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase(FrameworkSQLiteOpenHelper.kt:6) Line 1388: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: at androidx.room.RoomDatabase.inTransaction(RoomDatabase.kt:5) Line 1389: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: at androidx.room.RoomDatabase.assertNotSuspendingTransaction(RoomDatabase.kt:1) Line 1390: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: at androidx.work.impl.model.SystemIdInfoDao_Impl.getWorkSpecIds(SystemIdInfoDao_Impl.java:10) Line 1391: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: at androidx.work.impl.background.systemjob.SystemJobScheduler.reconcileJobs(SystemJobScheduler.java:17) Line 1392: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: at androidx.work.impl.utils.ForceStopRunnable.cleanUp(ForceStopRunnable.java:9) Line 1393: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: at androidx.work.impl.utils.ForceStopRunnable.forceStopRunnable(ForceStopRunnable.java:1) Line 1394: 07-18 13:13:46.039998 29707 29809 E AndroidRuntime: at androidx.work.impl.utils.ForceStopRunnable.run(ForceStopRunnable.java:29)
最新发布
08-22
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值