【达内课程】SQLite(一)创建数据库、创建数据表、增删改查
创建一个数据库MainActivity public class MainActivity extends AppCompatActivity {
private LinearLayout mainLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建数据库
createDatabase();
}
private void createDatabase() {
String name = "test.db";
int mode = MODE_PRIVATE;
SQLiteDatabase.CursorFactory cursorFactory = null;
openOrCreateDatabase(name,mode,cursorFactory);
}
}
运行程序,然后打开DDMS 找到data->data->包名->databases会看到自己创建的数据库test.db 创建数据表MainActivity public class MainActivity extends AppCompatActivity {
private SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建数据库
createDatabase();
//创建数据表
createTable();
}
private void createTable() {
String sql = "CREATE TABLE users ("+
"name VARCHAR(10) UNIQUE NOT NULL,"+
"age INTEGER,"+
"phone CHAR(11) UNIQUE,"+
"email VARCHAR(32) UNIQUE"+
")";
db.execSQL(sql);
}
private void createDatabase() {
String name = "test.db";
int mode = MODE_PRIVATE;
SQLiteDatabase.CursorFactory cursorFactory = null;
db = openOrCreateDatabase(name,cursorFactory);
}
}
运行程序后,同样打开DDMS,导出test.db 我们可以用Sqlite Expert这个工具查看 这个软件可以去官网下载或我的网盘下载 用法很简单,直接把test.db拖拽进来即可 左侧列出数据库和表,选中表,点击右侧Design可查看表结构 值得注意的是,我们创建数据库的时候写的是openOrCreateDatabase,打开或创建数据库,如果不存在该数据库就创建,如果存在就打开 而创建表是CREATE TABLE,会一直创建,所以如果再执行一遍程序,会崩溃,报表已存在的错:table users already exists FATAL EXCEPTION: main 我们先把createTable()注释掉 //createTable();
如果是字符串,需要用单引号标记,不能使用双引号 现在增加一条数据 MainActivity public class MainActivity extends AppCompatActivity {
private SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建数据库
createDatabase();
//创建数据表
//createTable();
//增加数据
insertData();
}
private void insertData() {
String sql = "INSERT INTO users "+
"(name,age,phone,email) "+
"values "+
"('Lily',40,'13333333333','123@qq.com')";
db.execSQL(sql);
}
private void createTable() {
String sql = "CREATE TABLE users ("+
"name VARCHAR(10) UNIQUE NOT NULL,cursorFactory);
}
}
报错一 如果我们故意把字段name写错成nama会报错提示没有相应字段 table users has no column named nama (code 1): 其实SQL语句不区分大小写,只要拼写正确即可 执行程序,再次导出test.db,用刚才的工具打开,点击右侧Data查看数据 报错二 我们已经成功插入了一条数据,由于刚才创建约束的时候名字是unique的,所以如果我们再运行程序,再插入相同数据, 会提示你UNIQUE constraint failed: users.email,说明 users.email本应是唯一的,现在却重复了 FATAL EXCEPTION: main 修改SQL语句,多增加几条数据 private void insertData() {
/*String sql = "INSERT INTO users "+
"(name,'123@qq.com')";*/
String sql = "INSERT INTO users "+
"(name,email) "+
"values "+
"('Tony',27,'18716000000','567@qq.com')";
db.execSQL(sql);
}
下面来测试下删除功能 现在的数据 删除名字是”Tom”的数据 MainActivity public class MainActivity extends AppCompatActivity {
private SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建数据库
createDatabase();
//创建数据表
//createTable();
//增加数据
//insertData();
//删除数据
deleteData();
}
private void deleteData() {
String sql = "DELETE FROM users WHERE name = 'Tom'";
db.execSQL(sql);
Log.d("SQL","删除成功");
}
......
}
修改sql语句,删除年龄大于26岁的数据 String sql = "DELETE FROM users WHERE age > 27";
现在就只剩Tony的数据了 修改sql语句,删除所有数据,会删除users表中所有数据 String sql = "DELETE FROM users";
下面测试修改功能 原始数据 private void updateData() {
String sql = "UPDATE users SET age = 22 WHERE name = 'Lily'";
db.execSQL(sql);
}
修改后的数据 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |