数据库基础和JDBC
一SQL查询
练习:
1.在grade表中查找80-90分的学生学号和分数
select studentid 学号,score 分数 form grade where socre between 80 and 90
2.在grade 表中查找课程编号为003学生的平均分
select AVG(score) from grade where couuseid='003'
3.在grade 表中查询学习各门课程的人数
select courseid ,COUNT(score) from grade GROUPBYcourseid;
4.查询所有姓张的学生的学号和姓名
select studentid ,studentname from grade where studentname like '张'
5.查询分数在80-90分的学生的学号、姓名、分数
select s.studentid,s.studentname,g.score from student s ,grade g
where s.studentid=g.studentid and g.score BETWEEN 80 AND 90
6.查询学习了'物理'课程的学生学号、姓名和分数
select s.studentid,s.studentname,g.socre from student s,grade g,course c
where s.studentid=g.studentid AND c.courseid=g.courseid AND c.courseName='物理'
注;from student s 这里面的s是表的别名
s.studentid=g.studentid 这个是多表链接
select studentid 学号,score 分数 别名
二 独立实现JDBCUtils获取链接
三独立实现JDBCUtils关闭资源
四独立实现JDBCUtils查询
五独立实现JDBCUtils 更新方法
localhost 不经过防火墙,不过网卡
127.0.0.0
用静态代码块加载JDBC驱动
static{
Class.forName("com.mysql.jdbc.Driver") ;
}
使用JDBC连接URL(协议:子协议:数据源标示)
private static String url="jdbc:mysql://localhost:3306/sqlDemo?useUnicode=true&characterEncoding=UTF8"
创建Connection数据库连接
String url="jdbc:mysql://localhost:3306/test";
String username="root";
Sting password ="root"
Connection conn=DriverManager.getConnection(url,user,password);
创建Statement声明
PreparedStatement pst=conn.prepareStatement(sql);
创建ResultSet结果集
ResultSet rs=pst.excuteQuery();
使用ResultSet结果集,访问查询到的数据
while(rs.next()){
String name=rs.getString("name");
String pass=rs.getString(1);
}
关闭资源,跟声明顺序相反
关闭结果集,关闭声明,关闭连接
rs.close();
pst.close();
conn.clost();
练习
写出一条sql语句查询在2015年10月12日——2015年10月18日之间有请假记录的学生名单(只要在这个时间之内有请假状态都算,即如果学生在10月10日-10月13日请假也符合要求,注意,只要两个时间段有交叉就应该查出来)
1.select * from qingjia where startTime>"20151012" AND endTime<"20151015"
2.JDBC常用接口及其用法;
1.Connection :特定数据库连接
2.Statement:用于执行静态SQL语句并返回它所生成结果的对象
3.PreparedStatement:表示预编译的SQL语句的对象
ResultSet:表示数据库结果集的数据表
JDBC重用类及其方法
DriverManager类用于管理JDBC驱动
Class.forname(driver)加载驱动
return DriverManager.getConnection(url,username,password);
Connection 类,用于程序和数据库的连接
PreparedStatement 类:预编译SQL语句的对象
ResultSet类:存储查询数据库的结果
3.//插入一万条数据,一次插入1000条
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
public class Student {
public static void main(String[] args) {
FileInputStream fis=null;
InputStreamReader reader=null;
BufferedReader buffreader=null;
Connection conn=null;
PreparedStatement ps=null;
try{//字节
fis=new FileInputStream("D:\\QingJia.csv");
//字符
reader=new InputStreamReader(fis);
//缓存,可以一行一行的读
buffreader=new BufferedReader(reader);
buffreader.readLine();//丢弃第一行
conn=JDBCUtils.getConnection();
conn.setAutoCommit(false);
//在一个连接中
ps=conn.prepareStatement("insert into QingJia(StudentID,StartTime,EndTime,Reason)");
String line;
int count=0;
while((line=buffreader.readLine())!=null){
//分隔成数组
String[]segments=line.split(",");
ps.clearParameters();
ps.setString(1, StudentID);
ps.setString(2, StartTime);
ps.setString(3, EndTime);
ps.setString(4, Reason);
//批量提交
ps.addBatch();
count++;
if(count%1000==0){
ps.executeBatch();
}
}
ps.executeBatch();
conn.commit();
System.out.println("导入成功");
} catch(SQLException se){
System.out.println("SQL异常"+se);
}catch(IOException ex){
}finally{
JDBCUtils.close(conn);
//和创建的顺序相反
IOUtils.closeQuietly(buffreader);
IOUtils.closeQuietly(reader);
IOUtils.closeQuietly(fis); } }
public static void rollback(Connection conn){
try {
conn.rollback();
} catch (SQLException e) {
System.out.println("回滚"); }
}
}
poi解析数据库到excel文件
数据库基础和JDBC的更多相关文章
- Java数据库基础(JDBC)
JDBC(Java Data Base Connectivity):SUN公司为了简化统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JDBC: 这样应用程序就不需要关注数据库底层的详细 ...
- JDBC连接MySQL数据库基础
主要内容 MySQL的基本操作和基本SQL语法 使用JDBC进行MySQL数据库的开发 使用DriverManager.Connection.PreparedStatement.ResultSet对数 ...
- Java面试题精选(二)线程编程、数据库理论和Jdbc部分
—— 线程编程.数据库理论和Jdbc部分内容 —— 数据库的开发应用想必是我们日常所碰到最多的知识点了,大致可分为:oracle.MySQL.SQL Server.Hadoop. NoSQL. ...
- java基础(11) -JDBC
java基础(11) -JDBC jdbc 1.装载驱动 载入跟数据库建立连接的驱动 /* sql server: String className ="com.microsoft.sqls ...
- JavaSE基础之JDBC
JavaSE基础之JDBC 1.JDBC 的步骤: ①加载数据库驱动: a.MySQL:com.mysql.jdbc.Driver: b.SQLServer:com.microsoft.jdbc.sq ...
- 转 MySQL数据库基础
http://lib.csdn.net/article/mysql/57883 1 数据库基础 一.数据库与数据库管理系统 1.数据库(DB):存放数据的仓库,从广义来说,数据不仅包括数字,还包括了文 ...
- 【Java基础】JDBC简明教程
目录 1. 常用类 2. JDBC编程步骤 3. 事务处理 4. 数据库连接池 5. JDBC列子代码 6. 使用Apache的JDBC工具类 虽然在平时的开发过程中我们不会直接使JDBC的API来操 ...
- 数据库基础,表及SQL语句
数据库基础及T-SQL语句 字符类型: int 整型 float 小数 double 小数 varchar(20) 字符串 bit 布尔型数据 datetime 日期时间类型 text 长文本 (以下 ...
- Oracle 数据库基础——安装
一.数据库基础知识 1.概念 数据库全称数据库管理系统,简称DBMS,是一种在计算机中,针对数据进行管理.存储.共享的一种技术. 2.分类 数据库的发展过程中,按逻辑模型可分为以下几种: 3.关系型数 ...
随机推荐
- ajax 请求另一个html页面的指定的一部分 加载到本页面div
$.ajax( { url: url, //这里是静态页的地址 type: "GET", //静态页用get方法,否则服务器会抛出405错误 success: function(d ...
- 种子填充算法描述及C++代码实现
项目需要看了种子填充算法,改进了算法主要去除面积小的部分.种子填充算法分为两种,简单的和基于扫描线的方法,简单的算法如下描述(笔者针对的是二值图像): (1)从上到下,从左到有,依次扫描每个像素: ( ...
- 回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议
引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...
- RecyclerView
学习到了 RecyclerView, 本来是ListView,但是我看的视频没有讲.主要是说取代ListView, 原因是更灵活更节省资源. 就是循环展现数据用的. 1. 引入 RecyclerVie ...
- python学习之day4,函数
1.函数的定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 特性: 减少重复代码 使程序变的可扩展 使程序变得易维护 语法定义: def ...
- How To Set Up an OpenVPN Server on Ubuntu 14.04
Prerequisites The only prerequisite is having a Ubuntu 14.04 Droplet established and running. You wi ...
- 基于NFS的分布式持久化
基于容器的微服务架构中,分布式持久化方案并没有一个默认的最好方案,这里使用NFS来作为容器持久化方案. NFS服务需要在服务器及需要挂载的客户端上分别安装配置. nfs-utils包含服务: rpcb ...
- 【Beta】Scrum03
Info 时间:2016.12.01 21:30 时长:15min 地点:大运村1号公寓5楼楼道 类型:日常Scrum会议 NXT:2016.12.04 21:30 Task Report Name ...
- [转]js获取域名、url、url参数值
//获取域名host1 = window.location.host;host2 = document.domain; //获取页面完整地址url = window.location.href; 获取 ...
- 浅谈系统架构<一>
前言:博主刚刚从事于Web后端开发与学习不久,开发项目经验也是有限的.不过今天依旧将一些个人的想法记录下来,我的构想或许不太正确,还望各位大牛能给我多多建议. 首先:我们从编程开始讲起 博主是偏向于后 ...