SQLite 是一个轻量级的数据库,一般在嵌入式的设备中进行数据的永久存储。
数据库的数据类型:
整型:int\number\INTEGER
浮点型:double
字符串:varchar(长度)\nvarchar\text
二进制:BLOB(其实这都是虚的,当存进不同数据的时候,就自动改变,为了自己以后的维护方便建议还是明确数据类型)。
今天用的时SQLite3 的Dos黑窗口学的,里面有几个常用的命令。
命令:以点开头,结尾没有分号
1、.help-----显示支持的命令2、.open-----打开数据库文件,存在则打开,不存在就新建
3、.tables---显示当前数据库中的表名
4、.schema---显示当前数据库中的建表语句
5、output---重定向,重新设置显示内容的目的地
6、.output stdout:将显示数据的目的地重新设置为当前的软件
7、.import 文件名.后缀 表名----将指定的文件内容添加到指定的表中。
help不用说了,关于这个.open <数据库名字.db> 这样的话就会打开指定的数据库,如果没有这个数据库的话就会自动创建一个数据据库。这个.schema 就可以查看当前已经新建的所有表,还有一套有意思的指令就是最后三个,如果采用这个.output <随意名字.txt> 这样的话就会把数据库中的数据写到这个.txt文件中,这个功能一般时作为备份数据库使用的,既然是备份那个就能恢复这个数据,然后采用.output stdout这个命令将这个备份文件重新设置为当前的软件,这个还没有完成完全的恢复,再次使用.import <任意文件名.txt> <表名> 这样的话就会恢复到这个数据库中了,可以再次查询修改。
语句
1、创建数据库:.open <数据库名称.db>
.open StudentDataBase.db
2、创建表:create table <表名> ( [ _id int primary key] , 字段1 字段1类型, 字段2 字段2类型,........);
create table Student(_id int primary key,name varchar(10),sex varchar(2),age int);
3、新增字段:alter table <插入字段的表名> add <新字段名称> ;
alter table Student add schoolName varchar(20);
4、插入值:insert into <表名> [ <字段名称1,字段名称2,字段名称3> ] values( 值1, 值2, 值3,); //这里的字段名称可写可不写,建议写。
insert into Student ( _id,name,sex,age) values(001,"Hejing","男",22);
简写:insert into Student values(001,"Hejing","男",22);
5、修改字段数据:update <表名> set <被修改的字段> = <要修改的结果值> where _id = <被修改数据行的 _id值>;//这个where条件建议是_id 因为这个是唯一不会相同的数据。
update Student set name = "Tcoy" where _id = 001;
6、删除数据行:delete from <表名> where _id = 001;
delete from Student where _id = 001 //这样的话就会把整个数据行进行删除掉。
7、查询语句:select [ * ] [ 字段1,字段2,字段3,......] from <表名> [ where 条件] [order by 字段 asc | desc]
8、查询这个表中的所有数据: select * from Student;
9、仅查询name字段所有数据:select name from Student;
10、要求按照年龄升序排列:select * from Student where order by age asc;
11、要求按照年龄降序排列:select * from Student where order by age desc;
12、模糊查询: %:任意字符 以A结尾:%A以A开头:A%
_:一个字符
13、sql 中没有& || 代替的是 and or
常用方法 :
(1)计算这个列的数量:select count(age) from Student;
(2)删除表:drop table <要删除的表名> ;
drop table Student;
(3)select DATE();查询日期
(4)select DATETIME();查询时间
Java中调用数据库
package com.hejingzhou.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCHandler {
private Statement statement = null;
public JDBCHandler() {
try {
Class.forName("org.sqlite.JDBC");
Connection connection = DriverManager.getConnection("jdbc:sqlite:DataBase.db");
statement = connection.createStatement();
statement
.execute("create table if not exists DataTable(id INTEGER primary key,name varchar(10) ,sex varcher(2),age int)");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void addData(String name, String sex, int age) {
try {
statement.executeUpdate("insert into DataTable(name,sex,age) values('" + name + "','" + sex + "','" + age + "')");
} catch (SQLException e) {
e.printStackTrace();
}
}
public void deleteData(int id) {
try {
statement.executeUpdate("delete from DataTable where id = '"+id+"'");
} catch (SQLException e) {
e.printStackTrace();
}
}
public void getAllData() {
try {
ResultSet resultSet = statement.executeQuery("select * from DataTable");
while (resultSet.next()) {
System.out.print(resultSet.getString(1));
System.out.print(resultSet.getString(2));
System.out.print(resultSet.getString(3));
System.out.println(resultSet.getString(4));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
在主函数中调用:
JDBCHandler jdHandler = new JDBCHandler();
// for (int i = 0; i < 10; i++) {
// jdHandler.addData("\t第" + i + "位同学", i % 2 == 0 ? "\t男" : "\t女", i);
// }
for (int i = 2; i < 4; i++) {
jdHandler.deleteData(i);
}
jdHandler.getAllData();
</pre>控制台结果:</div><div><pre code_snippet_id="1849879" snippet_file_name="blog_20160824_3_7901953" name="code" class="java">1 第0位同学 男0
4 第3位同学 女3
5 第4位同学 男4
6 第5位同学 女5
7 第6位同学 男6
8 第7位同学 女7
9 第8位同学 男8
10 第9位同学 女9