安卓学习-(数据存储(数据库,原生sql,和原生安卓操作))
2017-09-02 15:22
465 查看
使用原生sql操作数据库
新增数据:db.execSQL("insert into Book (name, author, pages, prices) values (?,?,?,?)", new String[] {"love", "guanjia", "520", "25.5"});
更新数据:db.execSQL("update Book set price = ? where name = ?", new String[] {"26.6", "love"});
删除数据:db.execSQL("delete from Book where pages > ", new String[] {"100"});
查询数据:db.rawQuery("select * from Book ", new String[] {"100"});
使用 封装好的东西来操作数据库
package
com.example.databasetest;
import
android.content.Context;
import
android.database.sqlite.SQLiteDatabase;
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, SQLiteDatabase.CursorFactory factory,
int
version) {
super(context,
name, factory, version);
mContext
= context;
}
@Override
//这里的onCreate方法,如果数据库存在,那么就只会执行一次。
public void
onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_BOOK);
db.execSQL(CREATE_CATEGORY);
Toast.makeText(mContext,
"Create succeeded", Toast.LENGTH_SHORT).show();
}
@Override
//这里是在实例化这个dbhelp的时候,最后一个数字表示版本号,如果大于上次设置的版本号,就会执行
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.databasetest;
import
android.content.ContentValues;
import
android.database.Cursor;
import
android.database.sqlite.SQLiteDatabase;
import
android.support.v7.app.AppCompatActivity;
import
android.os.Bundle;
import
android.util.Log;
import
android.view.View;
import
android.widget.Button;
public class
MainActivity
extends
AppCompatActivity {
private
MyDatabaseHelper
dbHelper;
@Override
protected void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//调用构造方法,实例化数据库操作对象
dbHelper
=
new
MyDatabaseHelper(this,
"BookStore.db",
null,
1);
Button createDatabase = (Button) findViewById(R.id.create_database);
createDatabase.setOnClickListener(new
View.OnClickListener() {
@Override
public void
onClick(View v) {
//getWritableDatabase() 和 getReadableDatabase() 都可以创建或实例化一个数据库对象
//当数据库不可写入(例如内存满了),getReadableDatabase返回只读对象,但是getWritableDatabase会报错
dbHelper.getWritableDatabase();
}
});
Button addData = (Button) findViewById(R.id.add_data);
//插入数据!!!
addData.setOnClickListener(new
View.OnClickListener() {
@Override
public void
onClick(View v) {
SQLiteDatabase db =
dbHelper.getWritableDatabase();
ContentValues values =
new
ContentValues();
// 开始组装第一条数据
values.put("name",
"The Da Vinci Code");
values.put("author",
"Dan Brown");
values.put("pages",
454);
values.put("price",
16.96);
db.insert("Book",
null, values);
// 插入第一条数据
values.clear();
// 开始组装第二条数据
values.put("name",
"The Lost Symbol");
values.put("author",
"Dan Brown");
values.put("pages",
510);
values.put("price",
19.95);
db.insert("Book",
null, values);
// 插入第二条数据
}
});
//更新数据
Button updateData = (Button) findViewById(R.id.update_data);
updateData.setOnClickListener(new
View.OnClickListener() {
@Override
public void
onClick(View v) {
SQLiteDatabase db =
dbHelper.getWritableDatabase();
ContentValues values =
new
ContentValues();
values.put("price",
10.99);
//数据库名, 新数据, where语句, 后面是条件
db.update("Book",
values, "name = ?",
new
String[] {
"The Da Vinci Code"
});
}
});
//删除数据
Button deleteButton = (Button) findViewById(R.id.delete_data);
deleteButton.setOnClickListener(new
View.OnClickListener() {
@Override
public void
onClick(View v) {
SQLiteDatabase db =
dbHelper.getWritableDatabase();
db.delete("Book",
"pages > ?",
new
String[] {
"500"
});
}
});
//查询数据
Button queryButton = (Button) findViewById(R.id.query_data);
queryButton.setOnClickListener(new
View.OnClickListener() {
@Override
public void
onClick(View v) {
SQLiteDatabase db =
dbHelper.getWritableDatabase();
// 查询Book表中所有的数据,参数分别是是表名,列名, where条件,具体值,
groupby, having, order by
//查询表中所有数据,并循环
Cursor cursor = db.query("Book",
null,
null,
null,
null,
null,
null);
if
(cursor.moveToFirst()) {
do
{
// 遍历Cursor对象,取出数据并打印
String name = cursor.getString(cursor.getColumnIndex("name"));
String author = cursor.getString(cursor.getColumnIndex("author"));
int
pages = cursor.getInt(cursor.getColumnIndex("pages"));
double
price = cursor.getDouble(cursor.getColumnIndex("price"));
Log.d("MainActivity",
"book name is "
+ name);
Log.d("MainActivity",
"book author is "
+ author);
Log.d("MainActivity",
"book pages is "
+ pages);
Log.d("MainActivity",
"book price is "
+ price);
}
while
(cursor.moveToNext());
}
cursor.close();
}
});
}
}
新增数据:db.execSQL("insert into Book (name, author, pages, prices) values (?,?,?,?)", new String[] {"love", "guanjia", "520", "25.5"});
更新数据:db.execSQL("update Book set price = ? where name = ?", new String[] {"26.6", "love"});
删除数据:db.execSQL("delete from Book where pages > ", new String[] {"100"});
查询数据:db.rawQuery("select * from Book ", new String[] {"100"});
使用 封装好的东西来操作数据库
package
com.example.databasetest;
import
android.content.Context;
import
android.database.sqlite.SQLiteDatabase;
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, SQLiteDatabase.CursorFactory factory,
int
version) {
super(context,
name, factory, version);
mContext
= context;
}
@Override
//这里的onCreate方法,如果数据库存在,那么就只会执行一次。
public void
onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_BOOK);
db.execSQL(CREATE_CATEGORY);
Toast.makeText(mContext,
"Create succeeded", Toast.LENGTH_SHORT).show();
}
@Override
//这里是在实例化这个dbhelp的时候,最后一个数字表示版本号,如果大于上次设置的版本号,就会执行
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.databasetest;
import
android.content.ContentValues;
import
android.database.Cursor;
import
android.database.sqlite.SQLiteDatabase;
import
android.support.v7.app.AppCompatActivity;
import
android.os.Bundle;
import
android.util.Log;
import
android.view.View;
import
android.widget.Button;
public class
MainActivity
extends
AppCompatActivity {
private
MyDatabaseHelper
dbHelper;
@Override
protected void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//调用构造方法,实例化数据库操作对象
dbHelper
=
new
MyDatabaseHelper(this,
"BookStore.db",
null,
1);
Button createDatabase = (Button) findViewById(R.id.create_database);
createDatabase.setOnClickListener(new
View.OnClickListener() {
@Override
public void
onClick(View v) {
//getWritableDatabase() 和 getReadableDatabase() 都可以创建或实例化一个数据库对象
//当数据库不可写入(例如内存满了),getReadableDatabase返回只读对象,但是getWritableDatabase会报错
dbHelper.getWritableDatabase();
}
});
Button addData = (Button) findViewById(R.id.add_data);
//插入数据!!!
addData.setOnClickListener(new
View.OnClickListener() {
@Override
public void
onClick(View v) {
SQLiteDatabase db =
dbHelper.getWritableDatabase();
ContentValues values =
new
ContentValues();
// 开始组装第一条数据
values.put("name",
"The Da Vinci Code");
values.put("author",
"Dan Brown");
values.put("pages",
454);
values.put("price",
16.96);
db.insert("Book",
null, values);
// 插入第一条数据
values.clear();
// 开始组装第二条数据
values.put("name",
"The Lost Symbol");
values.put("author",
"Dan Brown");
values.put("pages",
510);
values.put("price",
19.95);
db.insert("Book",
null, values);
// 插入第二条数据
}
});
//更新数据
Button updateData = (Button) findViewById(R.id.update_data);
updateData.setOnClickListener(new
View.OnClickListener() {
@Override
public void
onClick(View v) {
SQLiteDatabase db =
dbHelper.getWritableDatabase();
ContentValues values =
new
ContentValues();
values.put("price",
10.99);
//数据库名, 新数据, where语句, 后面是条件
db.update("Book",
values, "name = ?",
new
String[] {
"The Da Vinci Code"
});
}
});
//删除数据
Button deleteButton = (Button) findViewById(R.id.delete_data);
deleteButton.setOnClickListener(new
View.OnClickListener() {
@Override
public void
onClick(View v) {
SQLiteDatabase db =
dbHelper.getWritableDatabase();
db.delete("Book",
"pages > ?",
new
String[] {
"500"
});
}
});
//查询数据
Button queryButton = (Button) findViewById(R.id.query_data);
queryButton.setOnClickListener(new
View.OnClickListener() {
@Override
public void
onClick(View v) {
SQLiteDatabase db =
dbHelper.getWritableDatabase();
// 查询Book表中所有的数据,参数分别是是表名,列名, where条件,具体值,
groupby, having, order by
//查询表中所有数据,并循环
Cursor cursor = db.query("Book",
null,
null,
null,
null,
null,
null);
if
(cursor.moveToFirst()) {
do
{
// 遍历Cursor对象,取出数据并打印
String name = cursor.getString(cursor.getColumnIndex("name"));
String author = cursor.getString(cursor.getColumnIndex("author"));
int
pages = cursor.getInt(cursor.getColumnIndex("pages"));
double
price = cursor.getDouble(cursor.getColumnIndex("price"));
Log.d("MainActivity",
"book name is "
+ name);
Log.d("MainActivity",
"book author is "
+ author);
Log.d("MainActivity",
"book pages is "
+ pages);
Log.d("MainActivity",
"book price is "
+ price);
}
while
(cursor.moveToNext());
}
cursor.close();
}
});
}
}
相关文章推荐
- 安卓数据存储-使用LitePal操作数据库
- 数据库操作_连接SQL Server数据库示例;连接ACCESS数据库;连接到 Oracle 数据库示例;SqlCommand 执行SQL命令示例;SqlDataReader 读取数据示例;使用DataAdapter填充数据到DataSet;使用DataTable存储数据库表;将数据库数据填充到 XML 文件;10 使用带输入参数的存储过程;11 使用带输入、输出参数的存储过程示;12 获得数据库中表的数目和名称;13 保存图片到SQL Server数据库示例;14 获得插入记录标识号;Exce
- 【Android 开发】:数据存储之 SQLite 数据库操作(二)
- SQL不同服务器数据库之间的数据操作整理(完整版)
- 数据库常用的SQL语句(三)数据的操作
- 怎样对SQL 数据表和数据库进行迭代操作
- Java学习篇之SQL语句(操作数据库和数据表)
- sql脚本查询数据库表,数据,结构,约束等操作的方法
- 安卓高效开发:联系人数据存储与操作基本
- sql脚本查询数据库表,数据,结构,约束等操作的方法
- sql server service broker中调用存储过程执行跨库操作,不管怎么设置都一直提示 服务器主体 "sa" 无法在当前安全上下文下访问数据库 "dbname"。
- SQL不同服务器数据库之间的数据操作整理(完整版)
- 对表数据进行(置顶,上移,下移,置底操作)---数据库sql
- 安卓开发使用Sqllite数据库动态存储数据
- Android基础教程——数据存储之操作数据库SQLlite(一)
- 【Android 开发】:数据存储之 SQLite 数据库操作(三)
- 数据库-T-SQL 语句-创建表,删除表,CRUD操作的添加数据,修改数据,删除数据
- SQL不同服务器数据库之间的数据操作整理(完整版)
- 安卓原生操作数据库时,使用ContentValues类
- 使用PL/SQL Developer工具来实现创建表空间、创建数据库、备份数据库、数据导出等操作