java数据库基础
作者:网络转载 发布时间:[ 2017/4/19 11:35:56 ] 推荐标签:Java 数据库
一:数据库概述,SQLite数据库。
数据库(database)是按照数据结构来组织,存储、和管理数据的仓库,随着信息技术和市场的发展,数据库不再仅仅用来存储和管理数据,而是提供用户所需的各种数据管理方式。
数据库的特点:
数据结构化、数据的共享性高、冗余度低,易于扩展,数据的独立性高、数据由DBMS同意管理和控制。
常见的关系型数据库管理系统:Oracle,DB2,SQLServer,MySQL等
DBMS必须提供的数据控制功能:
数据的安全性(保护)、数据的完整性(检查),并发性(多个用户同时访问)、数据库的回复功能。
结构化查询语言,SQL:用于存取数据、查询、更新和管理关系型数据库
SQLite数据库。轻型的关系型数据管理系统,设计目标是嵌入式环境,
占用资源非常低,
二:基本SQL语句。
数据类型和约束:
SQLite采用动态数据类型,可以对字段不指定任何数据类型,SQLite会根据存入值自动判断。
数据类型:NULL空值、INTEGER带符号的整形,相当于Java中的Int型、REAL:浮点数字,相当于Java中的float/double型 TEXT/VARCHAR字符串文本,相当于Java中的String类,BLOB:二进制对象,相当于Java中的byte数组。
约束:数据表存储数据,有一些数据由明显的约束条件,如老师年龄>20;
CREATE TEBLE 创建时,应该将每个字段的约束条件进行说明,以后往表里天剑数据,系统会自动检查是否满足条件,不满足报错。
约束语句,NOT NULL 非空
UNIQUE PRIMARY KEY 主键
FORFIGN KEY 外键。 CHECK 条件检查 DEFAULT默认
创建表:
create table tablename(col1 type1[not null][primarykey],col2 type2…)
create table tablename(表名)(col1(行名) type1(行数据的类型)[not null](限制语句)[primarykey],col2 type2…)
Insert语句:
insert into student (name,cid,gender,age,score)value(‘tom’,1,1,20,80.2);
Update语句:
update student set name=’jack’ where name=’tom’;
Select语句:
查询语句:select * from 表名;
查询ID为1的信息,select * from student where id=1;
*号代表要查询的信息,eg:
select id,name,score from student;查询id,name ,score 的所有信息
Delete语句:
有条件的删除:
delete from student where score<60;
drop table 表名;删除表。
两个表联查,不用外键。
select * from student1 a,employee b where(a.[id]=b.[id]) and( a.name=’song’)
三:JDBC API,Java程序访问数据库
JDBC 概念:是用于执行SQL语句的API,可以为多种关系型数据库提供统一访问,由一组Java语言编写的类和接口。
JDBC驱动的分4中类型:
1、JDBC——ODBC桥
把所有的JDBC的调用传递给ODBC,再让后者调用数据库文本驱动代码
2、本地API驱动:
通过客户端加载数据库厂商提供的本地代码库来访为数据库,而在驱动程序中包含了Java代码。
3、网络协议驱动:
给客户端提供一个网络API,客户端上的JDBC驱动程序使用套接字Socket来调用服务器上的中间件程序,后者将其请求转化为所需的具体API调用。
4、本地协议:
使用Socket,直接在客户端和数据库间通信。
JDBC的三件事: 与数据库连接、发送操作数据库的SQL语句,返回结果,
创建数据库的连接:
Java程序中完成以下两个操作获得与数据库的connection连接对象:
第一步:加载数据库驱动程序;
Class.forName(“org.sqlite.JDBC”);
第二部:建立连接:
Connection conn = DriverManager.getConnection(“jdbc:sqlite:d:/stu.db”,”“,”“);
参数说明;第一个为协议url,假定连接到D盘下的stu数据库;第二个为用户名,第三个为密码,
发送操作数据库的SQL语句,
JDBC提供了三个类用于向数据库发送SQL语句,
connection接口中的三个方法可用于常见这些类的实例
Statement:由Connection对象的createStatement方法创建Statement对象用于简单的SQL语句
PreparedStatement:由prepareStatement方法创建PreparedStatement对象,用来发送带有输入参数的SQL语句。
CallableStatement: 由prepareCall方法创建CallableStatement对象用于执行SQL存储过程。
处理结果:
完成向数据库发送操作语句后,数据库引擎执行完后返回一个结果,结果主要有两种形式:
对于更新语句:完成后返回一个受操作影响的行数。
对于查询语句: 返回查询结果集ResultSet
1、ResultSet的next()方法下移结果集中记录指针并判断当前记录指针是否为空。、
2、ResultSet中的getxxx()方法读取结果集中当前记录的字段信息。
eg:
package com.tian.sqlite;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class SqliteDemo {
public static void main(String[] args) {
List list = fetchData();
for(Employee e:list){
System.out.println(e);
}
Employee employee = login("tian","1234");
if(employee!=null){
System.out.println("登录成功"+" 欢迎:"+employee.getName());
}else{
System.out.println("登录失败"+" 请重新登录。");
}
Employee employee1 = login("song","5678");
if(employee1!=null){
System.out.println("登录成功"+" 欢迎:"+employee1.getName());
}else{
System.out.println("登录失败"+" 请重新登录。");
}
}
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11