Android的SQLite基本操作

涉及SQLite的增删改查,结果用log显示

package com.example.sqlconnecttest;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DBHelper extends SQLiteOpenHelper{

	/*
	 * 必须有的构造器
	 */
	public DBHelper(Context context, String name, CursorFactory factory,
			int version) {
		super(context, name, factory, version);
	}

	/*
	 * 当第一次创建数据库时,就调用该方法
	 */
	@Override
	public void onCreate(SQLiteDatabase db) {
		Log.i("createDatabases", "创建数据库--->");
	}

	/*
	 * 当更新数据库时,调用该方法
	 */
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		Log.i("updateDatabase", "更新数据库--->");
	}
}
package com.example.sqlconnecttest;

import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener{

	private Button createDatabase;
	private Button createTable;
	private Button insert;
	private Button select;
	private Button update;
	private Button delete;

	private final String DATABASE_NAME = "myDatabase";
	private SQLiteDatabase mySQLiteDatabase = null;
	private final String TABLE_NAME = "user";
	private String SQL =
			"CREATE TABLE [user] ("+
            "[id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "+
            "[username] VARCHAR NOT NULL, "+
            "[password] VARCHAR NOT NULL, "+
            "[phoneNumber] VARCHAR NOT NULL)";
	private DBHelper db;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		createView();
		setListener();
	}

	private void createView(){
		createDatabase = (Button) findViewById(R.id.createDatabase);
		createTable = (Button) findViewById(R.id.createTable);
		insert = (Button) findViewById(R.id.insert);
		select = (Button) findViewById(R.id.select);
		update = (Button) findViewById(R.id.update);
		delete = (Button) findViewById(R.id.delete);
	}
	//加监听器
	private void setListener(){
		createDatabase.setOnClickListener(this);
		createTable.setOnClickListener(this);
		insert.setOnClickListener(this);
		select.setOnClickListener(this);
		update.setOnClickListener(this);
		delete.setOnClickListener(this);
	}
        //各种监听方法
	@Override
	public void onClick(View view) {
		switch(view.getId()){
		case R.id.createDatabase:
		{
			db = new DBHelper(MainActivity.this,DATABASE_NAME,null,1);
			mySQLiteDatabase = db.getWritableDatabase();
			Log.i("数据库对象", mySQLiteDatabase.toString());
			//System.out.print("数据库对象"+mySQLiteDatabase);
			break;
		}
		case R.id.createTable:
		{
			db = new DBHelper(MainActivity.this, DATABASE_NAME, null, 1);
			mySQLiteDatabase = db.getWritableDatabase();
			try {
				mySQLiteDatabase.execSQL(SQL);
				Log.i("创建表", SQL);
			} catch (SQLException e) {
				e.printStackTrace();
				Log.i("创建表--》", "创建表失败----------------》");
			}
			break;
		}
		case R.id.insert:
		{
			db = new DBHelper(MainActivity.this, DATABASE_NAME, null, 1);
			mySQLiteDatabase = db.getWritableDatabase();
			ContentValues cv = new ContentValues();
			cv.put("username", "老爸");
			cv.put("password", 123456);
			cv.put("phoneNumber", "134756658888");
			long n = mySQLiteDatabase.insert(TABLE_NAME, null, cv);
			Log.i("插入数据", n + "");
			mySQLiteDatabase.close();
			break;
		}
		case R.id.select:
		{
			db = new DBHelper(MainActivity.this, DATABASE_NAME, null, 1);
			mySQLiteDatabase = db.getReadableDatabase();
			/**
			 * 参数1:表名
			 * 参数2:要显示的列
			 * 参数3:where语句
			 * 参数4:where语句的条件值
			 * 参数5:分组方式
			 * 参数6:having条件
			 * 参数7:排序方式
			 */
			Cursor cursor = mySQLiteDatabase.query(TABLE_NAME,
					new String[]{"id","username","password","phoneNumber"},
					null, null, null, null, null);
			while(cursor.moveToNext()){
				int id = cursor.getInt(cursor.getColumnIndex("id"));
				String username = cursor.getString(cursor.getColumnIndex("username"));
				String password = cursor.getString(cursor.getColumnIndex("password"));
				String phoneNumber = cursor.getString(cursor.getColumnIndex("phoneNumber"));
				Log.i("query-->", "id:" + id + "userName:" + username +
					  "password" + password + "phoneNumber" + phoneNumber);
			}
			mySQLiteDatabase.close();
			break;
		}
		case R.id.update:
		{
			db = new DBHelper(MainActivity.this, DATABASE_NAME, null, 1);
			mySQLiteDatabase = db.getWritableDatabase();
			ContentValues cv1 = new ContentValues();
			cv1.put("username", "admin");
			cv1.put("password", "admin");
			cv1.put("phoneNumber", "1388888");
			String whereClause = "id" + "=?";
			String[] whereArgs = {"8"};
			/*
			 * 参数1:表名
			 * 参数2:是一个ContextValue对象,就是更新的值
			 * 参数3:where语句条件
			 * 参数4:where条件的值
			 */
			int index = mySQLiteDatabase.update(TABLE_NAME, cv1, whereClause, whereArgs);
			Log.i("update-->", index + "");
			break;
		}
		case R.id.delete:
		{
			db = new DBHelper(MainActivity.this, DATABASE_NAME, null, 1);
			mySQLiteDatabase = db.getWritableDatabase();
			/***
			 * 参数1:表名
			 * 参数2:where语句字段
			 * 参数3:where语句字段的值
			 */
			String whereClause1 = "id" + "=?";
			String[] whereArgs1 = {"1"};
			int num = mySQLiteDatabase.delete(TABLE_NAME, whereClause1, whereArgs1);
			Log.i("删除记录-->", num + "");
			mySQLiteDatabase.close();
			break;
		}
		default:
			break;
		}
	}
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.sqlconnecttest.MainActivity" >

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="SQLite数据库"
        />
    <Button
        android:id="@+id/createDatabase"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/textView"
        android:text="创建一个数据库"
        />
    <Button
        android:id="@+id/createTable"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/createDatabase"
        android:text="创建一张表"
        />
    <Button
        android:id="@+id/insert"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/createTable"
        android:text="插入数据"
        />
    <Button
        android:id="@+id/select"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/insert"
        android:text="查询数据"
        />
    <Button
        android:id="@+id/update"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/select"
        android:text="更新数据"
        />
    <Button
        android:id="@+id/delete"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/update"
        android:text="删除数据"
        />

</RelativeLayout>

运行结果

时间: 2024-10-25 12:05:47

Android的SQLite基本操作的相关文章

android Sqlite基本操作

新建一个类(ex:UserDBHelper)继承SQLiteOpenHelper 构造函数里面建数据库 public UserDBHelper(Context context, int version) { super(context, DB_NAME,null,version); } onCreate方法里面建表 /** * 只在数据库生成的时候调用,一般我们会在 * 这个方法里建表 * @param sqLiteDatabase */ @Override public void onCrea

Android开发-Sqlite操作

在写文章的核心的部分时我想简单的提一个小技巧: 大家通常在布局的使用中可能经常性的发现一个头部或者尾部的一个整体会被经常性的使用,在通常的java程序中这样重复的部分一般考虑用类进行封装,在android中xml式的文件中会怎么样处理?这里考虑用xml文件进行部件的封装. 先看我写的一个实际的xml文件 可以看出这样的xml文件中包含很多的图片文件,我们在定义一个drawable的时候可以通过xml定义的drawable对象.它使得一个图片能在不同的状态下显示不同的图案,比如一个Button,它

android 一个SQLite数据库多个数据表的基本使用框架 (带demo)

android 一个SQLite数据库多个数据表(带demo) 前言        demo演示        一.搭建        二.建立实体类        三.建立数据库操作类        四.配置Application        五.使用    GitHub 前言 我的上一篇博客讲的是简单的 android SQLite 数据库的基本操作如增删改查,有兴趣的朋友可以点一下这里android 简单SQLite数据库 增删改查 但是呢,一般的项目里,一个数据库也不会只有一个数据表,

【Android】Sqlite数据库增删改查

Android系统内置一个Sqlite数据库,如果app需要使用Sqlite数据库数据库存储数据,Android会为此app生成一个.db文件.这个数据库在data/data/<package_name>/databases里面,其中<package_name>为该安卓app的工程包名,这个目录必须root后才能看到.在Windows,单机的应用程序,存储数据,基本放到一个文件里面,正如游戏的存档,基本就是把当前的游戏状态存到一个用户很难找到的文件里面.每次存档读档就是一个从这个存

[转]Android Studio SQLite Database Example

本文转自:http://instinctcoder.com/android-studio-sqlite-database-example/ BY TAN WOON HOW · PUBLISHED APRIL 9, 2014 · UPDATED JUNE 23, 2016 SQLiteDatabase is a class that allowed us to perform Create, Retrieve , Update, and Delete data (CRUD) operation.

Android中SQLite事务的操作

1.创建一个数据库帮助类. package com.wzw.sqllitedemo.db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; import android.

android中SQLite数据库的增删改查

1.数据库帮助类PersonSQLiteOpenHelper package com.wzw.sqllitedemo.db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper

Android实现SQLite数据库的增、删、改、查的操作

核心代码DAO类 package com.examp.use_SQLite.dao; import java.util.ArrayList; import java.util.List; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import

Android中SQLite数据库小计

2016-03-16 Android数据库支持 本文节选并翻译<Enterprise Android - Programing Android Database Applications for the Enterprise>.学习目标: 学习Android对SQL的支持. 理解在Java中使用SQL——通过SQLiteDatabase类. 创建数据库——SQLiteOpenHelper类. 理解loaders.cursors和adapters. 为了在程序中使用本地的,结构化的数据,需要完成