一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的更多相关文章

  1. Java数据库基础(JDBC)

    JDBC(Java Data Base Connectivity):SUN公司为了简化统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JDBC: 这样应用程序就不需要关注数据库底层的详细 ...

  2. JDBC连接MySQL数据库基础

    主要内容 MySQL的基本操作和基本SQL语法 使用JDBC进行MySQL数据库的开发 使用DriverManager.Connection.PreparedStatement.ResultSet对数 ...

  3. Java面试题精选(二)线程编程、数据库理论和Jdbc部分

    —— 线程编程.数据库理论和Jdbc部分内容 ——     数据库的开发应用想必是我们日常所碰到最多的知识点了,大致可分为:oracle.MySQL.SQL Server.Hadoop. NoSQL. ...

  4. java基础(11) -JDBC

    java基础(11) -JDBC jdbc 1.装载驱动 载入跟数据库建立连接的驱动 /* sql server: String className ="com.microsoft.sqls ...

  5. JavaSE基础之JDBC

    JavaSE基础之JDBC 1.JDBC 的步骤: ①加载数据库驱动: a.MySQL:com.mysql.jdbc.Driver: b.SQLServer:com.microsoft.jdbc.sq ...

  6. 转 MySQL数据库基础

    http://lib.csdn.net/article/mysql/57883 1 数据库基础 一.数据库与数据库管理系统 1.数据库(DB):存放数据的仓库,从广义来说,数据不仅包括数字,还包括了文 ...

  7. 【Java基础】JDBC简明教程

    目录 1. 常用类 2. JDBC编程步骤 3. 事务处理 4. 数据库连接池 5. JDBC列子代码 6. 使用Apache的JDBC工具类 虽然在平时的开发过程中我们不会直接使JDBC的API来操 ...

  8. 数据库基础,表及SQL语句

    数据库基础及T-SQL语句 字符类型: int 整型 float 小数 double 小数 varchar(20) 字符串 bit 布尔型数据 datetime 日期时间类型 text 长文本 (以下 ...

  9. Oracle 数据库基础——安装

    一.数据库基础知识 1.概念 数据库全称数据库管理系统,简称DBMS,是一种在计算机中,针对数据进行管理.存储.共享的一种技术. 2.分类 数据库的发展过程中,按逻辑模型可分为以下几种: 3.关系型数 ...

随机推荐

  1. HTML页面和JSP页面禁止缓存

    一.JSP页面禁止缓存: 防止浏览器缓存当前访问的JSP动态页面,可以采用如下的方式进行设置,此效果如下的“HTML禁止缓存”: % 将过期日期设置为一个过去时间response.setHeader( ...

  2. 终于等到你---订餐系统之负载均衡(nginx+memcached+ftp上传图片+iis)

    又见毕业 对面工商大学的毕业生叕在拍毕业照了,一个个脸上都挂满了笑容,也许是满意自己四年的修行,也许是期待步入繁华的社会... 恰逢其时的连绵细雨与满天柳絮,似乎也是在映衬他们心中那些离别的忧伤,与对 ...

  3. 如何在个人博客引擎 Hexo 中添加 Swiftype 搜索组件

    在您现在看到的我的博客站点,后台使用的是 Hexo 作为博客引擎,但是默认集成的搜索组件是进行 form 提交到 Google 进行搜索的,为了更好地体验,本文介绍如何在 Hexo 博客中集成 Swi ...

  4. HtmlUnit初探

    HtmlUnit是一个用java实现的浏览器,是一个无界面的浏览器(headless browser),跟phatomJS好像是同一类事物. HtmlUnit基于apache httpClient,而 ...

  5. 1128ORDER BY的原理

     工作过程中,各种业务需求在访问数据库的时候要求有order by排序.有时候不必要的或者不合理的排序操作很可能导致数据库系统崩溃.如何处理好order by排序呢?本文从原理以及优化层面介绍 ord ...

  6. [分类算法] :朴素贝叶斯 NaiveBayes

    1. 原理和理论基础(参考) 2. Spark代码实例: 1)windows 单机 import org.apache.spark.mllib.classification.NaiveBayes im ...

  7. wpf *和auto的区别

    Auto 表示自动适应显示内容的宽度, 如自动适应文本的宽度,文本有多长,控件就显示多长. * 则表示按比例来分配宽度. <ColumnDefinition Width="3*&quo ...

  8. Google开源库-Volley的使用

    一.什么是Volley? Volley is an HTTP library that makes networking for Android apps easier and most import ...

  9. qthread 使用 signal 方法通信

    因为之间尝试过的 signal 机制,都是在 emit singnal_my() 的地方,直接调用了 slot 函数:相当于,slot 只是一个回调函数. 所以,在这里有点困惑,如果是要顺序执行完 s ...

  10. 狼人杀BETA阶段计划简介

    狼人杀beta阶段任务与目标 简介 一.前言 狼人杀alpha阶段终于在组团刷夜中结束了,我们取得了一些成绩,同时也暴露了团队的一些问题.但不管怎样,有了在alpha版本中收获的经验,我们将在beta ...