SQLite 基础语言 JDBCJava中的使用

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中调用数据库

这里面有一个大坑,因为这个Sqlite 数据库就是用用在小型的嵌入式设备上,所以非常之不适合应用在Web的工程上,今天用在了Web工程上了,就过搞了将近一个小时,怎么也不能成功的创建这个数据库,听别人说可以把这个数据库的地址定死,试了试,貌似不管用,所以一定不建议应用在Web 工程上。

这个工程需要导一下包   sqlitejdbc-v033-nested.jar
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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值