Android开发工程师文集-1 小时学会SQLite

前言

大家好,给大家带来Android开发工程师文集-1 小时学会SQLite的概述,希望你们喜欢

内容

  • 什么是Sqlite:
    效率高,开源,小型,程序驱动,支持事务操作,无数据类型,可嵌入的关系型数据库
    独立的,跨平台的,代码量少,简单易用

创建表语句

create table student(_id Integer primary key, name varchar(10), age Integer not null);

删除表

drop table student;

插入数据

Insert into 表名(字段列表) values (值列表);
insert into student(_id,age) values(1,17);
insert into student values(1,"vic",17);

修改数据

update student set name="vic",age=17 where _id=1;

更新数据

Update 表名 set 字段=值 列表 更新的条件

删除数据

delete from 表名 [删除条件];
delete from student where _id=1;

查询语句

select 字段名 from 表名称 [查询条件];
select 列名称 from 表名称 where 条件;
group by 分组的字段 having 筛选条件 order by 排序字段;
select * from student;
select _id from student;
select * from student where _id=1;
select * from student where _id=1 and age>17;
select * from student where age like "%1%";
select * from student where age>17 order by _id=1;

内容

  • 创建数据库
  • 实现数据库中的增删改查

要点

SQLiteOpenHelper,onCreate(),onUpgrade(),onOpen()

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/login_bg"
    android:orientation="vertical">
 <Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="创建"
  android:onClick="create"
  android:background="#000000"/>
</LinearLayout>
//MainActivity.java
public class MainActivity extends AppCompatActivity {
  private MySqliteHelper helper;
 @Override
 protected void onCreate(Bundle savedInstanceState){
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 helper = DbManger.getIntance(this);
 }
 public void createdb(View view){
  SQLiteDatabase db=helper.getWritableDatable();
 }
}
//创建一个类
//sqliteOpenHelper
//提供了onCreate()和onUpgrade()与onOpen()
public class MySqliteHelper extends SQLiteOpenHelper{
 public MySqliteHelper(Context context, String name, SQLitebase.CursorFactory factory, int version){
 super(context,name,factory,version);
 }
 public MySqliteHelper(Context context){
  super(context,Constant.DATABASE_NAME,null,Constant.DATABASE_VERSION);
}
 //数据库创建时回调
 @Override
 public void onCreate(SQLiteDatabase db){
  Log.i("tag","--onCreate--");
  //String sql="create table student(_id Integer primary key,name verchar(10),age Integer)";
  String sql = "create table "+Constant.TABLE_NAME+"("+Constant._ID+" Integer primary key,"+Constant.NAME+" varchar(10),"+Constant.AGE+" Integer)";
  db.execSQL(sql);//执行数据库语句
 }
 //数据库更新
 @Override
 public void onUpgrade(SQLiteDatabase db,int oldVersion, int newVersion){
  Log.i("tag","--onUpgrade--");
 }
 //数据库打开
 @Override
 public void onOpen(SQLiteDatabase db){
  super.onOpen(db);
  Log.i("tag","--onOpen--");
 }
}
//创建库表
public class Contant{
 public static final String DATABASE_NAME=“info.db”;//数据库名称
 public static final int DATABASE_VERSION=1;//数据库的版本号
 public static final String TABLE_NAME="student";//表名
  //用这里表示
 public static final String _ID="_id";
 public static final String _NAME="name";
 public static final String AGE="age";
public class DbManger{
 private static MySqliteHelper helper;
 public static MySqliteHelper getIntance(Context context){
   if(helper == null){
     helper=new MySqliteHelper(content);
   }
   return hepler;
 }
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/login_bg"
    android:orientation="vertical">
 <Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="创建"
  android:onClick="create"
  android:background="#000000"/>
<Button
  android:id="@+id/btn_insert"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="插入数据"
  android:onClick="click"
  android:layout_marginTop="15dp"
  android:background="#000000"/>
</LinearLayout>
//MainActivity.java
public class MainActivity extends AppCompatActivity {
  private MySqliteHelper helper;
 @Override
 protected void onCreate(Bundle savedInstanceState){
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 helper = DbManger.getIntance(this);
 }
 public void createdb(View view){
  SQLiteDatabase db=helper.getWritableDatable();
 }
 public void click(View view){
  switch(view.getId()){
   case R.id.btn_insert:
    SQLiteDatabase db=helper.getWritableDatabase();
    String sql="insert into "+Constant.TABLE_NAME+" values(1,'vic',17)";
    DbManger.execSQL(db,sql);
    String sql2="insert into "+Constant.TABLE_NAME+" values(2,'vic',23)";
    DbManger.execSQL(db,sql2);
    db.close();
    break;
 }
}
public class DbManger{
 private static MySqliteHelper helper;
 public static MySqliteHelper getIntance(Context context){
   if(helper == null){
     helper=new MySqliteHelper(content);
   }
   return hepler;
 }
 public static void execSQL(SQLiteDatabase db,String sql){
  if(db!=null){
   if(sql!=null && !"".equals(sql)){
     db.execSQL(sql);
  }
 }
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/login_bg"
    android:orientation="vertical">
 <Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="创建"
  android:onClick="create"
  android:background="#000000"/>
<Button
  android:id="@+id/btn_insert"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="插入数据"
  android:onClick="click"
  android:layout_marginTop="15dp"
  android:background="#000000"/>
<Button
  android:id="@+id/btn_update"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="修改数据"
  android:onClick="click"
  android:layout_marginTop="15dp"
  android:background="#000000"/>
</LinearLayout>
//MainActivity.java
public class MainActivity extends AppCompatActivity {
  private MySqliteHelper helper;
 @Override
 protected void onCreate(Bundle savedInstanceState){
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 helper = DbManger.getIntance(this);
 }
 public void createdb(View view){
  SQLiteDatabase db=helper.getWritableDatable();
 }
 public void click(View view){
  switch(view.getId()){
   case R.id.btn_insert:
    SQLiteDatabase db=helper.getWritableDatabase();
    String sql="insert into "+Constant.TABLE_NAME+" values(1,'vic',17)";
    DbManger.execSQL(db,sql);
    String sql2="insert into "+Constant.TABLE_NAME+" values(2,'vic',23)";
    DbManger.execSQL(db,sql2);
    db.close();
    break;
   case R.id.btn_update:
    db=helper.getWritableDatabase();
    String updateSql="update "+Constant.TABLE_NAME"+" set "+Contant.NAME+"='vic2' where "+Contant._ID+"=1";
    DbManger.execSQL(db,updateSql);
    db.close();
    break;
 }
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/login_bg"
    android:orientation="vertical">
 <Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="创建"
  android:onClick="create"
  android:background="#000000"/>
<Button
  android:id="@+id/btn_insert"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="插入数据"
  android:onClick="click"
  android:layout_marginTop="15dp"
  android:background="#000000"/>
<Button
  android:id="@+id/btn_update"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="修改数据"
  android:onClick="click"
  android:layout_marginTop="15dp"
  android:background="#000000"/>
<Button
  android:id="@+id/btn_delete"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="删除数据"
  android:onClick="click"
  android:layout_marginTop="15dp"
  android:background="#000000"/>
</LinearLayout>
//MainActivity.java
public class MainActivity extends AppCompatActivity {
  private MySqliteHelper helper;
 @Override
 protected void onCreate(Bundle savedInstanceState){
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 helper = DbManger.getIntance(this);
 }
 public void createdb(View view){
  SQLiteDatabase db=helper.getWritableDatable();
 }
 public void click(View view){
  switch(view.getId()){
   case R.id.btn_insert:
    SQLiteDatabase db=helper.getWritableDatabase();
    String sql="insert into "+Constant.TABLE_NAME+" values(1,'vic',17)";
    DbManger.execSQL(db,sql);
    String sql2="insert into "+Constant.TABLE_NAME+" values(2,'vic',23)";
    DbManger.execSQL(db,sql2);
    db.close();
    break;
   case R.id.btn_update:
    db=helper.getWritableDatabase();
    String updateSql="update "+Constant.TABLE_NAME"+" set "+Contant.NAME+"='vic2' where "+Contant._ID+"=1";
    DbManger.execSQL(db,updateSql);
    db.close();
    break;
   case R.id.btn_delete:
    db=helper.getWritableDatabase();
    String delSql="delete from "+Constant.TABLE_NAME+" where "+Constant._ID+"=2";
    DbManger.execSQL(db,delSql);
    db.close();
    break;
 }
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/login_bg"
    android:orientation="vertical">
 <Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="创建"
  android:onClick="create"
  android:background="#000000"/>
<Button
  android:id="@+id/btn_insert"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="插入数据"
  android:onClick="click"
  android:layout_marginTop="15dp"
  android:background="#000000"/>
<Button
  android:id="@+id/btn_update"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="修改数据"
  android:onClick="click"
  android:layout_marginTop="15dp"
  android:background="#000000"/>
<Button
  android:id="@+id/btn_delete"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="删除数据"
  android:onClick="click"
  android:layout_marginTop="15dp"
  android:background="#000000"/>
<Button
  android:id="@+id/btn_insertApi"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="插入数据"
  android:onClick="onclick"
  android:layout_marginTop="15dp"
  android:background="#000000"/>
</LinearLayout>
//MainActivity.java
public class MainActivity extends AppCompatActivity {
  private MySqliteHelper helper;
 @Override
 protected void onCreate(Bundle savedInstanceState){
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 helper = DbManger.getIntance(this);
 }
 public void createdb(View view){
  SQLiteDatabase db=helper.getWritableDatable();
 }
 public void onClick(View view){
  switch(view.getId()){
   case R.id.btn_insertApi:
    SQLiteDatabase db=helper.getWritableDatabase();
    ContentValues values=new ContentValues();
    values.put(Constant._ID,3);
    values.put(Constant.NAME,"vic");
    values.put(Constant.AGE,17);
    long result=db.insert(Constant.TABLE_NAME,null,values);
    if(result>0){
     Toast.makeText(MainActivity.this,"插入数据成功!",Toast.LENGTH_LONG).show();
    }else{
      Toast.makeText(MainActivity.this,"插入数据失败!",Toast.LENGTH_LONG).show();
    }
    db.close();
    break;
   }
}

 public void click(View view){
  switch(view.getId()){
   case R.id.btn_insert:
    SQLiteDatabase db=helper.getWritableDatabase();
    String sql="insert into "+Constant.TABLE_NAME+" values(1,'vic',17)";
    DbManger.execSQL(db,sql);
    String sql2="insert into "+Constant.TABLE_NAME+" values(2,'vic',23)";
    DbManger.execSQL(db,sql2);
    db.close();
    break;
   case R.id.btn_update:
    db=helper.getWritableDatabase();
    String updateSql="update "+Constant.TABLE_NAME"+" set "+Contant.NAME+"='vic2' where "+Contant._ID+"=1";
    DbManger.execSQL(db,updateSql);
    db.close();
    break;
   case R.id.btn_delete:
    db=helper.getWritableDatabase();
    String delSql="delete from "+Constant.TABLE_NAME+" where "+Constant._ID+"=2";
    DbManger.execSQL(db,delSql);
    db.close();
    break;
 }
}
<Button
  android:id="@+id/btn_insertApi"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="插入数据"
  android:onClick="onclick"
  android:layout_marginTop="15dp"
  android:background="#000000"/>
<Button
  android:id="@+id/btn_updateApi"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="更新数据"
  android:onClick="onclick"
  android:layout_marginTop="15dp"
  android:background="#000000"/>
public void onClick(View view){
  switch(view.getId()){
   case R.id.btn_insertApi:
    SQLiteDatabase db=helper.getWritableDatabase();
    ContentValues values=new ContentValues();
    values.put(Constant._ID,3);
    values.put(Constant.NAME,"vic");
    values.put(Constant.AGE,17);
    long result=db.insert(Constant.TABLE_NAME,null,values);
    if(result>0){
     Toast.makeText(MainActivity.this,"插入数据成功!",Toast.LENGTH_LONG).show();
    }else{
      Toast.makeText(MainActivity.this,"插入数据失败!",Toast.LENGTH_LONG).show();
    }
    db.close();
    break;
   case R.id.btn_updateApi:
    //String table 修改的数据表的名称,ContentValues values,String whereClause 表示修改条件,String[] whereArgs
    db=helper.getWritableDatabase();
    //db.update(String table,ContentValues values,String whereClause,String[] whereArgs);
    ContentValues cv=new ContentValues();
    cv.put(Contant.NAME,"vic3");
    int count=db.update(Constant.TABLE_NAME,cv,Contant.TABLE_NAME,cv,Constant._ID+"=?",new String[]{"3"});
    if(count>0){
     Toast.makeText(MainActivity.this,"插入数据成功!",Toast.LENGTH_LONG).show();
    }else{
      Toast.makeText(MainActivity.this,"插入数据失败!",Toast.LENGTH_LONG).show();
    }
    db.close();
    break;
   }
}
<Button
  android:id="@+id/btn_updateApi"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="更新数据"
  android:onClick="onclick"
  android:layout_marginTop="15dp"
  android:background="#000000"/>
public void onClick(View view){
  switch(view.getId()){
   case R.id.btn_insertApi:
    SQLiteDatabase db=helper.getWritableDatabase();
    ContentValues values=new ContentValues();
    values.put(Constant._ID,3);
    values.put(Constant.NAME,"vic");
    values.put(Constant.AGE,17);
    long result=db.insert(Constant.TABLE_NAME,null,values);
    if(result>0){
     Toast.makeText(MainActivity.this,"插入数据成功!",Toast.LENGTH_LONG).show();
    }else{
      Toast.makeText(MainActivity.this,"插入数据失败!",Toast.LENGTH_LONG).show();
    }
    db.close();
    break;
   case R.id.btn_updateApi:
    //String table 修改的数据表的名称,ContentValues values,String whereClause 表示修改条件,String[] whereArgs
    db=helper.getWritableDatabase();
    //db.update(String table,ContentValues values,String whereClause,String[] whereArgs);
    ContentValues cv=new ContentValues();
    cv.put(Contant.NAME,"vic3");
    int count=db.update(Constant.TABLE_NAME,cv,Contant.TABLE_NAME,cv,Constant._ID+"=?",new String[]{"3"});
    if(count>0){
     Toast.makeText(MainActivity.this,"插入数据成功!",Toast.LENGTH_LONG).show();
    }else{
      Toast.makeText(MainActivity.this,"插入数据失败!",Toast.LENGTH_LONG).show();
    }
    db.close();
    break;
  case R.id.btn_deleteApi:
  db=helper.getWritableDatabase();

  //int count2=db.delete(String table,StringwhereClause,String[] whereArgs);
  int count2=db.delete(Constant.TABLE_NAME,Constant._ID+"=?",new String[]{"1"});
  if(count2>0){
     Toast.makeText(MainActivity.this,"插入数据成功!",Toast.LENGTH_LONG).show();
    }else{
      Toast.makeText(MainActivity.this,"插入数据失败!",Toast.LENGTH_LONG).show();
    }
  db.close();
  break;
}
 public int delete(String table,String whereClause,String[] whereArgs){
  acquireReference();
  try{
   SQLiteStatement statement = new SQLiteStatement(this,"DELETE FROM "+table+(!TextUtils.isEmpty(whereClause) ? " WHERE "+whereClause : ""), whereArgs;
 try{
  return statement.executeUpdateDelete();
  }finally{
   statement.close();
  }
  }finally{
  releaseReference();
}

总结

  • 本文讲了Android开发工程师文集-1 小时学会SQLite,如果您还有更好地理解,欢迎沟通
  • 定位:分享 Android&Java知识点,有兴趣可以继续关注

原文地址:https://www.cnblogs.com/dashucoding/p/9281294.html

时间: 2024-08-27 09:08:50

Android开发工程师文集-1 小时学会SQLite的相关文章

Android开发工程师文集-1 小时学会Widget小组件开发

前言 大家好,给大家带来Android开发工程师文集-1 小时学会Widget小组件开发的概述,希望你们喜欢 学会用Widget (小组件) Widget小组件很方便,很快捷,可以个性化,自己定制,相关功能,可以实时更新最新内容. Widget布局,Widget配置,AppWidgetProvider与Configuration Activity Android Widget xml布局类型:AppWidget Provider <appwidget-provider xmlns:android

Android开发工程师文集-1 小时学会各种Drawable

前言 大家好,给大家带来Android开发工程师文集-1 小时学会各种Drawable的概述,希望你们喜欢 Drawable介绍 Drawable为抽象类,drawable与view有区别的地方,主要是体现事件和交互性上面. view是面向用户的,是可见的控件,能给它添加点击事件.drawable则相反,不能面向,也不可见,也不能添加点击事件. drawable有好多子类,drawable为抽象类,所以有很多子类来继承它. 主要原理方法 draw() setBounds() BitmapDraw

Android开发工程师文集-提示框,菜单,数据存储,组件篇

提示框,菜单,数据存储,组件篇 Toast Toast.makeText(context, text, 时间).show(); setDuration();//设置时间 setGravity();//位置 获取: 添加toast.getView(); imageView添加到toast中,addView(); LayoutInflater inflater = LayoutInflater.from(this); View toast_view=inflater.inflate(R.id.,nu

Android开发工程师,新长征路上的14项技能

导读: 你曾渴望回到宋朝吗? 或者什么朝,反正就是男耕女织的古代. 哦,那时的首都在汴梁(开封),房价想必没有这么高,工作?无非就是给你把锄头,去,种地去.夕阳西下了,麦子垛后,你和翠姑搂抱在一起,那时的你,生活的简单而美好. 看看现在的你,一个刚入门的安卓开发工程师,没有信用卡,没有她,没有24小时热水的家.你想念你的锄头和翠姑(或麦垛),可你回不去了,你现在手中的安卓手机,冰冷如铁,你不知道如何在这4寸屏的小东西上打出一片天地. 你不用感到不知所措和困惑,技术就是你安身立命的根本,当下,你的

Android开发工程师,前行路上的14项技能

导读: 你是否曾渴望回到宋朝? 或者什么朝,反正就是男耕女织的古代. 哦,那时的首都在汴梁(开封),房价想必没有现在这么高,工作?无非就是给你把锄头,去,种地去.夕阳西下了,麦子垛后,你和翠姑搂抱在一起,那时的你,生活的简单而美好. 看看现在的你,一个刚入门的安卓开发工程师,没有信用卡,没有她,没有24小时热水的家.你想念你的锄头和翠姑(或麦垛),可你回不去了.你握在手中的安卓手机,冰冷如铁,你不知道如何在这4寸屏的小东西上创出一片天地. 你不用感到不知所措和困惑,技术就是你安身立命的根本,当下

Android开发工程师应该知道的50个开发秘诀、技巧和资源分享

作者撰写本文的初衷,是为了罗列出Android Studio有用的提示.技巧.快捷方式和参考资源,将提高您的整体效率和操作性能. 显然,还有很多优化.快捷方式等,但作者为了保持这篇文章的简短,限制为50个,希望读者会喜欢这篇文章! InfoQ注:本文是以MacOS X操作Android Studio为例,与Windows / Linux不一致的地方已经标注,请读者注意这一点. 可视化 1.Android Logcat的材料颜色主题(Material Colors theme). 要更改Andro

帮朋友急招PHP、Android开发工程师 西安 工资8k-12k

PHP高级工程师岗位要求: 1. 有两年以上PHP开发经验, 2. 精通PHP+MySQL程序设计及开发,拥有良好的代码习惯,要求结构清晰,命名规范,逻辑性强,代码冗余率低. 3. 熟悉面向对象的软件设计方法,对面向对象的设计模式有较深的理解并能熟练应用.4. 熟悉常用框架thinkphp或CI或YII其中一种.5. 熟悉webAndroid开发工程师前端HTML[XHTML).JQuery等JS框架.6. 逻辑性强,思维清晰,学习能力强,能够快速的学习新的技能.7. 有高流量网站开发架构经验,

1-3年Android开发工程师怎么面试?已拿下知乎、网易和快手的offer!

分享一下我朋友的面经给大家,最后他去了知乎,所以这也是一份非常中肯的面经! 本篇文章给大家分享一下笔者面试的一些感受和经验,因为笔者目前不到两年的工作经验,所以本篇文章定位为1-3年的Android开发工程师.当然本篇也适用于校招,但3年以上估计面试要求会更高一些. 笔者从前期准备到所有面试结束,花费了差不多3个月的时间.真可谓"面试造火箭,工作拧螺丝",面试过程真的很累很辛苦. 笔者面了很多公司,最终拿下了知乎.网易和快手的offer,最后选择了知乎. 有人可能会问为什么不选择快手?

Android开发工程师的不同层次

从事Android开发这个职业,若想仅仅通过不断地为技术充电就能在未来的职场上有不错的前景,那则是不正确的.区别不同层次开发工程师的东西,就是感性思维.只靠理性思维的技术,你只是打工者:若还具备感性思维(比如对用户的了解)你便是领导者. <?xml:namespace prefix="o" ns="urn:schemas-microsoft-com:office:office"> ?xml:namespace> 好技术是Android开发者共有的,