main_xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="horizontal">
<Button
android:id="@+id/btn1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/button1"
android:layout_gravity="center"/>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/txt1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25sp"/>
</ScrollView>
</LinearLayout>
MainActivity.java
package com.example.sqlite;
import androidx.appcompat.app.AppCompatActivity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
TextView txt1 = null;
private static final String dbFile = "sqlitedemo.db";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn1 =(Button) findViewById(R.id.btn1);
btn1.setOnClickListener(this);
txt1 =(TextView) findViewById(R.id.txt1);
}
@Override
protected void onDestroy(){
super.onDestroy();
}
@Override
public void onClick(View v){
if (v.getId() == R.id.btn1){
SQLiteDatabase db = openOrCreateDatabase(dbFile,MODE_PRIVATE,null);
Log.d("数据库路径",db.getPath());
db.close();
}
if (v.getId() == R.id.btn1){
CSqliteEngine dbe = new CSqliteEngine(this,dbFile,null,2);
SQLiteDatabase db = dbe.getWritableDatabase();
//显示日志
Cursor records = db.rawQuery("select * from log;",null);
StringBuilder sb = new StringBuilder();
if(records.moveToFirst()){
do {
sb.append(records.getString(0)).append(",");
sb.append(records.getString(1)).append(",");
sb.append(records.getString(2)).append(",");
sb.append("\n");
}while(records.moveToNext());
}
txt1.setText(sb.toString());
db.close();
dbe.close();
}
if (v.getId() == R.id.btn1){
SQLiteDatabase db = null;
try {
db = openOrCreateDatabase(dbFile, MODE_PRIVATE, null);
StringBuilder sql = new StringBuilder();
sql.append("create table if not exists user_main(");
sql.append("userid integer not null primary key,");
sql.append("username text not null unique,");
sql.append("userpwd text not null,");
sql.append("islocked integer not null default 0,");
sql.append("sex integer not null default 0,");
sql.append("email text");
sql.append(");");
db.execSQL(sql.toString());
txt1.setText("数据表已创建");
}catch (Exception ex){
txt1.setText(ex.getMessage());
}finally {
if (db != null) db.close();
}
}
if (v.getId() == R.id.btn1){
SQLiteDatabase db = null;
try {
db = openOrCreateDatabase(dbFile,MODE_PRIVATE,null);
String sql = "alter table user_main add column ts integer;";
db.execSQL(sql);
txt1.setText("数据表结构已修改");
}catch (Exception ex){
txt1.setText(ex.getMessage());
}finally {
if (db != null) db.close();
}
}
if (v.getId() == R.id.btn1){
SQLiteDatabase db = null;
try {
db = openOrCreateDatabase(dbFile, MODE_PRIVATE, null);
StringBuilder sql = new StringBuilder();
sql.append("insert into user_main");
sql.append("(username,userpwd,sex,islocked,email)");
sql.append("values(");
sql.append("'admin','123456',0,0,'admin@aaa.bbb'");
sql.append(");");
db.execSQL(sql.toString());
}catch (Exception ex){
txt1.setText(ex.getMessage());
}finally {
if (db != null) db.close();
}
}
if (v.getId() == R.id.btn1){
SQLiteDatabase db = null;
try {
db = openOrCreateDatabase(dbFile,MODE_PRIVATE,null);
StringBuilder sql = new StringBuilder();
sql.append("insert into user_main");
sql.append("(username,userpwd,sex,islocked,email)");
sql.append("values(?,?,?,?,?);");
db.execSQL(sql.toString(),new Object[]{
"user01","123456",1,0,"user01@aaa.bbb"});
db.execSQL(sql.toString(),new Object[]{
"user02","123456",2,0,"user02@aaa.bbb"});
}catch (Exception ex){
txt1.setText(ex.getMessage());
}finally {
if (db != null) db.close();
}
}
if (v.getId() == R.id.btn1){
SQLiteDatabase db = null;
try {
db = openOrCreateDatabase(dbFile, MODE_PRIVATE,null);
ContentValues values = new ContentValues();
values.put("username","user03");
values.put("userpwd","123456");
values.put("islocked",0);
values.put("sex",1);
values.put("email","user03@aaa.bbb");
db.insert("user_main",null,values);
values.clear();
values.put("username","user04");
values.put("userpwd","123456");
values.put("islocked",0);
values.put("sex",2);
values.put("email","user04@aaa.bbb");
db.insert("user_main",null,values);
}catch (Exception ex){
txt1.setText(ex.getMessage());
}finally {
if (db != null) db.close();
}
}
if (v.getId() == R.id.btn1){
SQLiteDatabase db = null;
try {
db = openOrCreateDatabase(dbFile, MODE_PRIVATE, null);
String sql = "select * from user_main;";
Cursor records = db.rawQuery(sql,null);
showData(records);
records.close();
}catch (Exception ex){
txt1.setText(ex.getMessage());
}finally {
if (db != null) db.close();
}
}
}
private void showData(Cursor records) {
if (records == null || records.getCount() == 0){
txt1.setText("没有满足条件的记录");
return;
}
StringBuilder sb = new StringBuilder();
int fieldCount = records.getColumnCount();
for (int i=0;i<fieldCount;i++){
sb.append(records.getColumnName(1));
sb.append(" | ");
}
sb.append("\n");
if (records.moveToFirst()){
do {
for(int i=0;i<fieldCount;i++){
sb.append(records.getString(i));
sb.append(" | ");
}
sb.deleteCharAt(sb.length()-1);
sb.append("\n");
}while(records.moveToNext());
}
txt1.setText(sb.toString());
}
}
CSqliteEngine类
package com.example.sqlite;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class CSqliteEngine extends SQLiteOpenHelper {
private static final String sqlCreateLog =
"create table if not exists log("+
"logid integer not null primary key,"+
"logtext text,"+
"logtime integer);";
private static final String sqlInsertLog =
"insert into log(logtext,logtime) values(?,?);";
public CSqliteEngine(Context context,
String dbName,
SQLiteDatabase.CursorFactory factory,
int version)
{
super(context,dbName,factory,version);
}
@Override
public void onCreate(SQLiteDatabase db){
db.execSQL(sqlCreateLog);
db.execSQL(sqlInsertLog,
new Object[]{"创建数据库",System.currentTimeMillis()});
}
@Override
public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
db.execSQL(sqlInsertLog,
new Object[]{"更新数据库",System.currentTimeMillis()});
}
}
通过什么查询 where =?,游标呢?