package com.example.databaseHelper;
public class DatabaseStatic {
public final static String DATABASE_NAME = "BookStore.db";
public final static int DATABASE_VERSION = 1;
public final static String TABLE_NAME = "book";
public final static String BOOK_NAME = "bookName";
public final static String ID = "_id";
public final static String AUTHOR = "author";
public final static String PRICE = "price";
public final static String DATE = "sellData";
}
package com.example.databaseHelper;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import android.widget.Toast;
/*
* 在这个类的构造函数里面我们调用了父类的构造方法用来创建数据库文
* 件,第二个构造方法只是为了方便构造(不用些那么多的参数)
* 这个类继承了 SQLiteOpenHelper 类,并且重写了父类里面的
onCreate方法和 onUpgrade方法,
* onCreate方法当数据库文件不存在的时候会被调用来创建一个新的数
* 据库文件(不懂的小伙伴可以百度一下)
*/
public class MyHelper extends SQLiteOpenHelper{
public static String CREATE_TABLE = "create table "+ DatabaseStatic.TABLE_NAME +"(" +
DatabaseStatic.BOOK_NAME + " varchar(30), " +
DatabaseStatic.ID + " Integer primary key autoincrement, " +
DatabaseStatic.AUTHOR + " varchar(20) not null, " +
DatabaseStatic.PRICE + " real)"; // 用于创建表的SQL语句
private Context myContext = null;
public MyHelper(Context context, String name,
CursorFactory factory, int version) {
super(context, DatabaseStatic.DATABASE_NAME, null, DatabaseStatic.DATABASE_VERSION);
}
public MyHelper(Context context)
{
super(context, DatabaseStatic.DATABASE_NAME, null, DatabaseStatic.DATABASE_VERSION);
myContext = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
Log.i("UseDatabase", "创建数据库");
Toast.makeText(myContext, "创建数据库", Toast.LENGTH_SHORT).show();
db.execSQL(CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
}
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/mainLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center_horizontal" tools:context=".MainActivity" > <Button android:id="@+id/buttonCreateDatabase" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="创建数据库" /> <Button android:id="@+id/buttonInsertDatabase" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="插入数据"/> <Button android:id="@+id/buttonUpdateDatabase" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="更新数据"/> <Button android:id="@+id/buttonDeleteDatabase" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="删除数据"/> <Button android:id="@+id/buttonQueryDatabase" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="显示数据库中 Book表中的所有数据"/> </LinearLayout>
import com.example.databaseHelper.DatabaseStatic;
import com.example.databaseHelper.MyHelper;
import android.os.Bundle;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private MyHelper myHelper = null;
private Button button = null;
private SQLiteDatabase database = null;
private static int bookSum = 0;
TextView textView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = new TextView(this);
LinearLayout layout = (LinearLayout) findViewById(R.id.mainLayout);
layout.addView(textView);
button = (Button) findViewById(R.id.buttonCreateDatabase);
button.setOnClickListener(listener);
button = (Button) findViewById(R.id.buttonInsertDatabase);
button.setOnClickListener(listener);
button = (Button) findViewById(R.id.buttonUpdateDatabase);
button.setOnClickListener(listener);
button = (Button) findViewById(R.id.buttonDeleteDatabase);
button.setOnClickListener(listener);
button = (Button) findViewById(R.id.buttonQueryDatabase);
button.setOnClickListener(listener);
}
private View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch(v.getId())
{
case R.id.buttonCreateDatabase:
createDatabase();
break;
case R.id.buttonInsertDatabase:
insertDatabase();
break;
case R.id.buttonUpdateDatabase:
updateDatabase();
break;
case R.id.buttonDeleteDatabase:
deleteDatabase();
break;
case R.id.buttonQueryDatabase:
searchDatabase();
break;
}
}
};
private void createDatabase() // 创建或者打开数据库
{
myHelper = new MyHelper(this);
/*
* 调用getWritabelDatabase方法或者
* getReadableDatabase方法时,如果数据库文
* 件中不存在(注意一个数据库中可以存在多个表格),
* 那么会回调MyHelper类的onCreate方法新建一个数据库文
* 件并且在这个数据库文件中新建一
* 个book表格
*/
myHelper.getWritableDatabase();
}
private void insertDatabase() // 向数据库中插入新数据
{
if(myHelper == null)
{
myHelper = new MyHelper(this);
}
database = myHelper.getWritableDatabase();
ContentValues cV = new ContentValues();
cV.put(DatabaseStatic.BOOK_NAME, "C Language");
cV.put(DatabaseStatic.ID, ++bookSum);
cV.put(DatabaseStatic.AUTHOR, "zhidian");
cV.put(DatabaseStatic.PRICE, 42.6);
/*
* 这个方法是留给不熟悉SQL语句的小伙伴用的,Android把
* SQLite的插入语句封装了起来,
* 通过 ContentValues 类的对象来保存数据库中的数据,
* 于HashMap
*/
database.insert(DatabaseStatic.TABLE_NAME, null, cV);
/*
* 对应的SQL语句:
* database.execSQL("insert into " + DatabaseStatic.TABLENAME + " values(?, ?, ?, ?)",
* new Object[]{"C Language", ++bookSum, "zhidian", 42.6});
* 或者是这个:
* database.execSQL("insert into " + DatabaseStatic.TABLENAME + "(" +
* DatabaseStatic.BOOKNAME + ", " + DatabaseStatic.ID + ", " +
* DatabaseStatic.AUTHOR + ", " + DatabaseStatic.PRICE +
* ") values(?, ?, ?, ?)", new Object[]{"C Language", ++bookSum, "zhidian", 42.6});
* 这里将 ? 号理解成一个C语言里面的占位符,然后通过 Object[] 数组中的内容补全,下同
* 参数中的 Object[] 数组是一个通用的数组,里面的数据可以转换为任意类型的数据,通过这个完成不同数据类型变量之间的储存
*/
Toast.makeText(this, "插入数据成功", Toast.LENGTH_SHORT).show();
}
private void updateDatabase() // 更新数据
{
if(myHelper == null)
{
myHelper = new MyHelper(this);
}
database = myHelper.getWritableDatabase();
ContentValues cV = new ContentValues();
cV.put(DatabaseStatic.AUTHOR, "xiaoming");
/*
* 调用 update 方法,将书名为"C Language" 的书作者更新为 "xiaoming
*/
database.update(DatabaseStatic.TABLE_NAME, cV,
DatabaseStatic.BOOK_NAME + "= ?", new String[]{"C Language"});
/*
* 对应的SQL语句:
* database.execSQL("update " + DatabaseStatic.TABLENAME + " set " + DatabaseStatic.AUTHOR +
* "= ? where " + DatabaseStatic.BOOKNAME + " = ?", new String[]{"xiaoming", "C Language"});
*/
Toast.makeText(this, "数据更新成功", Toast.LENGTH_SHORT).show();
}
private void deleteDatabase() // 数据库中删除数据
{
if(myHelper == null)
{
myHelper = new MyHelper(this);
}
database = myHelper.getWritableDatabase();
/*
* 调用 delete 方法删除数据库中的数据
* 对应的SQL语句:
* database.execSQL("delete from " +
* DatabaseStatic.TABLE_NAME + " where " +
* DatabaseStatic.BOOK_NAME + " = ?", new
* String[]{"C Language"});
*/
database.delete(DatabaseStatic.TABLE_NAME, DatabaseStatic.BOOK_NAME + " = ? ",
new String[]{"C Language"});
Toast.makeText(this, "数据删除成功", Toast.LENGTH_SHORT).show();
}
private void searchDatabase() // 查询数据库中的数据
{
if(myHelper == null)
{
myHelper = new MyHelper(this);
}
database = myHelper.getWritableDatabase();
/*
* 调用database的query方法,第一个参数是要查询的表名,
* 后面的参数是一些查询的约束条件,对应于SQL语句的一些参
* 数, 这里全为null代表查询表格中所有的数据
* 查询的结果返回一个 Cursor对象
* 对应的SQL语句:
* Cursor cursor = database.rawQuery("select * from book", null);
*/
Cursor cursor = database.query(DatabaseStatic.TABLE_NAME, null, null, null, null, null, null);
StringBuilder str = new StringBuilder();
if(cursor.moveToFirst()) // 显示数据库的内容
{
for(; !cursor.isAfterLast(); cursor.moveToNext()) // 获取查询游标中的数据
{
str.append(cursor.getString(cursor.getColumnIndex(DatabaseStatic.ID)) + " ");
str.append(cursor.getString(cursor.getColumnIndex(DatabaseStatic.BOOK_NAME)) + " ");
str.append(cursor.getString(cursor.getColumnIndex(DatabaseStatic.AUTHOR)) + " ");
str.append(cursor.getString(cursor.getColumnIndex(DatabaseStatic.PRICE)) + "\n");
}
}
cursor.close(); // 记得关闭游标对象
if(str.toString().equals(""))
{
str.append("数据库为空!");
textView.setTextColor(Color.RED);
}
else
{
textView.setTextColor(Color.BLACK);
}
textView.setText(str.toString());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
create table 表名(参数1 数据类型 约数条件, 参数2 数据类型 约束条件…)
insert into 表名(参数1, 参数2…) values(参数1的值, 参数2的值…)
insert into 表名 values(参数1的值, 参数2的值)
insert into person(_id, name, sex, age) values(1, “指点”, “男”, 19) insert into person values(1, “指点”, “男”, 19)
update 表名 set 参数1 = 值, 参数2 = 值… where 条件1 and 条件2 or 条件3…
delete from 表名 where 条件1 and 条件2 or 条件3…
delete from person where _id > 0 and name = “指点”
select 参数1, 参数2… from 表名 where 条件1 and 条件2…
select _id, name, sex from person where name = “指点” or _id = 1
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有