SQLite操作数据库的步骤

package com.example.dbdemo;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;

public class MyDatabaseHelper extends SQLiteOpenHelper {
	//创建自定义数据库操作类的两个成员变量,静态常量字符串
	public static final String CREATE_BOOK="create table book(id integer primary key autoincrement,author text,price real,pages integer,name text)";
	public static final String CREATE_CATEGORY="create table category(id integer primary key autoincrement"+
					",category_name text,category_code integer)";
	private Context mContext; //上下文对象;

	public MyDatabaseHelper(Context context, String name,
			CursorFactory factory, int version) {
		super(context, name, factory, version);
		mContext=context;  //给当前上下文对象赋值
	}
	//1.创建数据库的方法
	@Override
	public void onCreate(SQLiteDatabase db) {
		//使用db的execSQL方法,来执行创建数据表的方法
		db.execSQL(CREATE_BOOK);
		db.execSQL(CREATE_CATEGORY);
		Toast.makeText(mContext,"创建数据成功!",Toast.LENGTH_SHORT).show();
	}
	//更新数据的方法;更新数据内容的方法;因为已经有了数据库,则不会再次创建数据库 ;
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		db.execSQL("drop table if exists book"); //如果存在,则删除!!!
		db.execSQL("drop table if exists category");
		onCreate(db);
	}

}
package com.example.dbdemo;

import android.app.Activity;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
	//1.创建主活动类的成员变量是数据库操作类
	private MyDatabaseHelper dbHelper;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//---------------------------在主活动的方法里面来调用写数据的方法;
		//如何让调用onUpgrade()方法,使用版本号,即第四个参数
		dbHelper=new MyDatabaseHelper(MainActivity.this,"BookStore.db",null,2);
		Button btnDb=(Button)findViewById(R.id.btnDb);
		btnDb.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View arg0) {
				dbHelper.getWritableDatabase();
			}
		});
		//------------------为插入数据,编写相应的代码-----------------
		//SQLiteDatabase对象,借助这个对象,就可以对数据进行CRUD操作!
		//SQLiteDatabase类提供了一个insert()方法,这个方法专门用于对数据进行添加数据。它接受三个参数,第一个参数是表名,我们希望向哪个表添加数据,这里就传入该表的名字
		//第二个参数用于在未指定给某些可为空的列自动赋值NULL,一般我们用不到这个功能;
		//第三个参数是一个ContentValues对象,它提供了一系列的put()方法重载,用于向ContentValues中添加数据,只需要将表中的每个列名以及相应的待添加数据传入即可
		Button btnAddData=(Button)findViewById(R.id.btnAddData);
		btnAddData.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				SQLiteDatabase db=dbHelper.getWritableDatabase(); //返回一个SQLiteDatabase对象,可以对sqlite数据库进行操作;
				ContentValues values=new ContentValues();
				//开始组装第一条数据
				values.put("name", "魔兽");
				values.put("author", "张");
				values.put("pages", 454);
				values.put("price", 16.96);
				long i1=db.insert("Book", null,values); //插入第一条数据;
				values.clear();   //清楚内容值对象里面的数据;
				values.put("name", "JQuery");
				values.put("author", "li.sir");
				values.put("pages", 510);
				values.put("price", 19.95);
				long i2=db.insert("Book",null,values);   //插入第二条数据;
				if(i1!=-1){
					Toast.makeText(MainActivity.this, "第一条数据插入成功", Toast.LENGTH_LONG).show();
				}
				if(i2!=-1){
					Toast.makeText(MainActivity.this, "第一条数据插入成功", Toast.LENGTH_LONG).show();
				}
			}
		});
		//针对数据进行更新;
		Button btnUpdateData=(Button)findViewById(R.id.btnUpData);
		btnUpdateData.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				SQLiteDatabase db=dbHelper.getWritableDatabase();  //获得SQLiteDatabase对象;
				ContentValues values=new ContentValues(); //获得内容值对象;
				values.put("price", 188);
				int i3=db.update("Book", values,"name=?",new String[]{"魔兽"});
				//update(表名 ,值对象,列名,确定原来的哪一行数据
				if(i3!=0){
					Toast.makeText(MainActivity.this, "数据修改成功", Toast.LENGTH_LONG).show();
				}
			}
		});
		//-------------------使用删除按钮,对数据删除------------
		Button btnDeleteData=(Button)findViewById(R.id.btnDeleteData);
		btnDeleteData.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				SQLiteDatabase db=dbHelper.getWritableDatabase(); //获得SQLiteDatabase对象db
				int i4=db.delete("Book", "pages>?", new String[]{"500"});
				//delete(表名,哪个参数,具体值)
				Toast.makeText(MainActivity.this, "数据删除成功"+i4, Toast.LENGTH_LONG).show();
			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}
时间: 2024-11-07 14:20:11

SQLite操作数据库的步骤的相关文章

EF操作数据库的步骤和一些简单操作语句

这里是写给我自己做记录的,不会写成一篇很好的博客,也不会置顶,如果有朋友看到了,而且觉得里面的内容不咋的,希望见谅哈! 关于这部分内容,这里推荐一篇总结的非常好的博客,如果你点击进来了,那么请略过下面的内容,直接点击这个链接,因为写的真的不错:https://www.cnblogs.com/gosky/p/5751815.html. 我个人还没有对EF相关的内容进行详细的整理,所以这篇随笔的参考意义不大,只是贴一些代码上去,以后有机会有时间,会对相关内容做一个总结. 使用EF操作数据库的详细步骤

JDBC操作数据库的详细步骤

JDBC操作数据库的步骤: 1.注册驱动 告知JVM使用的是哪一个数据库的驱动 2.获得连接 使用JDBC中的类,完成对MySQL数据库的连接 3.获得语句执行平台 通过连接对象获取对SQL语句的执行者对象 4.执行sql语句 使用执行者对象,向数据库执行SQL语句 获取到数据库的执行后的结果 5.处理结果 6.释放资源  一堆close() 1.注册驱动,发射技术,将驱动加入到内容 使用java.sql.DriverManager类静态方法 registerDriver(Driver driv

JDBC操作数据库的学习(2)

在上一篇博客<JDBC操作数据库的学习(1)>中通过对例1,我们已经学习了一个Java应用如何在程序中通过JDBC操作数据库的步骤流程,当然我们也说过这样的例子是无法在实际开发中使用的,本篇就在简单开发中如何对上一篇的例子进行“升级”,满足简单开发中对数据库的增删改查(CRUD). 如果按照上一篇中的例子,那么我们在做增删改查的话将会出现每个方法都要获取连接,释放资源,代码会出现很大的重复性,因此我们应该将每个增删改查每个方法中可以复用的代码抽取出来,同时为了能切换数据库方便,也该将一些配置信

Asp.net Core 2.1使用 EF Core 简单增删改查操作数据库

Asp.net Core 2.1使用 EF Core 简单增删改查操作数据库 大概步骤如下5步: 1.创建项目(Asp.net Core 2.1项目) 2.项目使用EF Core 3.建立实体 4.生成迁移文件(生成数据库) 5.使用VS工具生成视图.控制器代码 示例代码下载  https://github.com/ZhMartincheng/NetCoreDemo.git 1.创建项目(Asp.net Core 2.1项目) 选择.net core 版本2.1 基础项目创建成功 2.项目使用E

Qt之操作数据库(SQLite)实例

QtSql模块提供了与平台以及数据库种类无关的访问SQL数据库的接口,这个接口由利用Qt的模型视图结构将数据库与用户界面集成的一套类来支持.QSqlDatabase对象象征了数据库的关联.Qt使用驱动程序与各种数据库的应用编程接口进行通信.Qt的桌面版(Desktop Edition)包括如下一些驱动程序: 驱动程序 数据库  QDB2 IBM DB2 7.1版以及更新的版本  QIBASE Borland InterBase QMYSQL MySql  QOCI 甲骨文公司(Oracle Ca

QT SQLite 多数据库操作大全

QT SQLite 多数据库操作大全 一.单数据库模型 一般QT都是把打开一个缺省数据库连接,操作一个数据库连接,但是对Sqlite中频率修改容易加锁,因此有一种设计模式是把频率修改的表放在不同的数据库文件中,但这样要修改代码操作数据库部分 通常打开代码 http://developer.nokia.com/community/wiki/Creating_an_SQLite_database_in_Qt bool DatabaseManager::openDB() { // Find QSLit

sqlite:多线程操作数据库“database is locked”解决方法(二)

上一篇博客<sqlite:多线程操作数据库“database is locked”解决方法>通过注册延时函数的方法来处理数据库被锁的问题.此方法固然能解决问题,但是在多个线程向数据库写入大量数据的情况下,延时会拖慢进度. 想出方法二: 1. 创建一个链表,链接如下格式的结构体,线程1,线程2,线程3......不直接改写数据库,而是把sql语句插入链表中: typedef struct { uint8_t *buf; uint32_t len; } sqlItem_t; 2. 创建一个独立的线

用ADO操作数据库的方法步骤(ZT)

http://www.cppblog.com/changshoumeng/articles/113437.html 学习ADO时总结的一些经验 用ADO操作数据库的方法步骤 ADO接口简介 ADO库包含三个基本接口:_ConnectionPtr接口._CommandPtr接口和_RecordsetPtr接口. _ConnectionPtr接口返回一个记录集或一个空指针. 通常使用它来创建一个数据连接或执行一条不返回任何结果的SQL语句,如一个存储过程.使用_ConnectionPtr接口返回一个

用ADO操作数据库的方法步骤

用ADO操作数据库的方法步骤 学习ADO时总结的一些经验 - 技术成就梦想 - 51CTO技术博客 http://freetoskey.blog.51cto.com/1355382/989218 ADO接口简介 ADO库包含三个基本接口:_ConnectionPtr接口._CommandPtr接口和_RecordsetPtr接口. _ConnectionPtr接口返回一个记录集或一个空指针. 通常使用它来创建一个数据连接或执行一条不返回任何结果的SQL语句,如一个存储过程.使用_Connecti