SQlite数据库简介&介绍以及使用API调用
2017-01-05 16:41
591 查看
打开虚拟机的数据库
1.xml文件
2,主Activity
3,实例化一些常数
4,对数据库操作的常用类
5,打开或创建数据库的类
1.xml文件
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="OnCreat" android:text="@string/creat" /> <Button android:id="@+id/btn_insert" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="click" android:text="@string/insertdata" /> <Button android:id="@+id/btn_updata" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="click" android:text="@string/updata" /> <Button android:id="@+id/btn_delete" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="click" android:text="@string/delete" /> <Button android:id="@+id/btn_insertApi" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onClick" android:text="@string/apiinsert" /> <Button android:id="@+id/btn_updataApi" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="click" android:text="Api修改数据" /> <Button android:id="@+id/btn_deleteApi" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="click" android:text="Api删除数据" /> </LinearLayout>
2,主Activity
public class MainActivity extends AppCompatActivity { private MySqliteHelper helper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); helper = DbManager.getIntance(this); //获取了数据库帮助类的对象 } //点击创建按钮,创建数据库 public void OnCreat(View view){ /** * getReadableDatabase * getWritableDatabase * 创建或打开数据库 * 如果使用时没有发现数据库就创建数据库,如果发现则打开数据库 * 默认情况下两个都表示创建或打开可读可写的数据库对象 * 如果出现磁盘已满或数据库权限的情况下getReadableDatabase打开的是只读数据库 * */ SQLiteDatabase db = helper.getWritableDatabase(); } public void click(View view){ switch (view.getId()){ case R.id.btn_insert: SQLiteDatabase db =helper.getWritableDatabase(); String sql = "insert into "+ Constant.TABLENAME+" values(1,'zhangshan',20)"; //双引号里面不能再用双引号,要用单引号 DbManager.execSQL(db,sql); String sql2 = "insert into "+ Constant.TABLENAME+" values(2,'lisi',20)"; DbManager.execSQL(db,sql2); db.close(); //防止数据库使用资源的占用 break; case R.id.btn_updata: db = helper.getWritableDatabase(); String sql3 = "updata person set name = 'xiaoming' where _id=1"; DbManager.execSQL(db,sql3); db.close(); break; case R.id.btn_delete: db = helper.getWritableDatabase(); String deletedatabase = "delete from person where _id=1"; DbManager.execSQL(db,deletedatabase); db.close(); break; } } public void onClick(View view){ switch (view.getId()){ case R.id.btn_insertApi: SQLiteDatabase db = helper.getWritableDatabase(); /** * table 插入数据库的名称 * String nullColumnHack SQLite规定不能插入全是空的一条数据 * ContentValues values 键为String类型的hashmap集合 * 返回值long 表示插入数据的列数 */ ContentValues values =new ContentValues(); values.put(Constant._ID,3); values.put(Constant.NAME,"xiaoming"); values.put(Constant.AGE,12); long result =db.insert(Constant.TABLENAME,null,values); if (result>0){ Toast.makeText(MainActivity.this,"插入数据成功",Toast.LENGTH_SHORT); }else { Toast.makeText(MainActivity.this,"插入数据失败",Toast.LENGTH_SHORT); } db.close(); break; case R.id.btn_updataApi: db=helper.getWritableDatabase(); /** * ContentValues values 键为String类型的hashmap集合 * String whereClause 修改的条件 * String[] whereArgs 修改条件的占位符 */ ContentValues cv = new ContentValues(); cv.put(Constant.NAME,"sl");//put(需要修改的字段名称,修改后的字段值) int count = db.update(Constant.TABLENAME, cv,"_id=3",null); // int count = db.update(Constant.TABLENAME, cv,"_id=?",new String[]{"3"}); 与上面的效果完全一样 if (count>0){ Toast.makeText(MainActivity.this,"修改数据成功",Toast.LENGTH_SHORT); }else { Toast.makeText(MainActivity.this,"修改数据失败",Toast.LENGTH_SHORT); } db.close(); break; case R.id.btn_deleteApi: db = helper.getWritableDatabase(); /** * String table, String whereClause, String[] whereArgs */ int deleteresult=db.delete(Constant.TABLENAME,"_id=3",null); if (deleteresult>0){ Toast.makeText(MainActivity.this,"删除数据成功",Toast.LENGTH_SHORT); }else { Toast.makeText(MainActivity.this,"删除数据失败",Toast.LENGTH_SHORT); } db.close(); } }
3,实例化一些常数
public class Constant { public static final String DATABASENAME="info.db"; //数据库名称 public static final int DATABASE_VERSION = 1; //数据库版本号 public static final String TABLENAME = "person"; //表名 public static final String NAME = "name"; public static final String AGE = "age"; public static final String _ID = "_id"; }
4,对数据库操作的常用类
/** * 对数据库操作的工具类 * Created by sky on 2017/1/5. */ public class DbManager { private static MySqliteHelper helper; //构建一个帮助类的对象 //相应类的获取方式 //开发模式中的单例模式 public static MySqliteHelper getIntance(Context context) { if (helper == null){ helper =new MySqliteHelper(context); } return helper; } /** * 根据SQL语句在数据库中执行语句 * 可以执行除查询外的所有语句 * @param db 数据库对象 * @param sql SQL语句 */ public static void execSQL(SQLiteDatabase db,String sql){ if (db !=null){ if (sql!=null && !"".equals(sql)){ db.execSQL(sql); } } } }
5,打开或创建数据库的类
/** * Created by sky on 2017/1/5. * sqliteopenhelper * 1。提供了Onceat,Onupgrade()等创建数据库更新数据库的方法 * 2.提供了获取数据库对象的函数 */ public class MySqliteHelper extends SQLiteOpenHelper { /** * 构造函数 * @param context * @param name 表示创建数据库的名称 * @param factory 游标工厂 * @param version 当前数据库的版本 >=1 */ public MySqliteHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); } public MySqliteHelper (Context context){ super(context,Constant.DATABASENAME,null,Constant.DATABASE_VERSION); } /** * * 当数据库创建时回d调的函数 * @param db 数据库对象 */ @Override public void onCreate(SQLiteDatabase db) { /** * 创建表的语句 */ //String sql = "creat table person(_id Integer primary key ,name varchar(10),age Integer)"; String sql = "creat table"+Constant.TABLENAME+"("+Constant._ID+"Integer primary key," +Constant.NAME+"varchar(10),"+Constant.AGE +" Integer)"; /** * 执行SQ语句 */ db.execSQL(sql); Log.i("tag","<<<<<<<<OnCreat>>>>>>>"); } /** * 当数据库有版本更新时回调的函数 * @param db * @param oldVersion 数据库旧版本 * @param newVersion 数据库新版本 */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } /** * 当数据库打开时回调的函数 * @param db */ @Override public void onOpen(SQLiteDatabase db) { super.onOpen(db); Log.i("tag","<<<<<<<<OnOpen>>>>>>>"); } }
相关文章推荐
- python调用win32下的API__&&__Win32Com__[转]使用 python 写 COM
- 【iOS-cocos2d-X 游戏开发之十四】Xcode中c++&Object-C混编,详细介绍如何在cocos2dx中访问object函数以及Apple Api
- Xcode中c++&Object-C混编,详细介绍如何在cocos2dx中访问object函数以及Apple Api
- href='#'和href='###'的区别以及javascript:;与javascript:void(0)使用介绍
- 【循序渐进地学好OpenCV&4】使用2.0的API显示图片以及OpenCV的自动化内存管理
- 维基百科api的简单调用以及wiki 标记的转义(pear的安装以及使用)
- 使用html5中video自定义播放器必备知识点总结以及JS全屏API介绍
- 使用系统调用的原因以及其与库函数(api)的区别
- android 隐藏API显式调用以及内部资源使用方法
- 使用html5中video自定义播放器必备知识点总结以及JS全屏API介绍
- 【原】matlab与调用lingo/lindo api的方法以及简单的使用
- java通过jedis使用redis,以及部分api介绍
- hive搭建以及使用与简介(这里就介绍最简单的嵌入式了)
- 如何使用Spring Cloud – 简单服务流程(服务发现与API调用)
- 基于SP(SharedPreferences)的基本使用以及实际应用介绍
- 【Unity&NGUI】背包,技能栏,Grid自动排序以及代码使用的条件
- 对于Bootstrap的介绍以及如何使用
- MVVMLight介绍以及在项目中的使用
- HBase - Filter - 过滤器的介绍以及使用 | 那伊抹微笑
- HBase - 计数器 - 计数器的介绍以及使用 | 那伊抹微笑