• 数据库基础和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语句查询在20151012日——20151018日之间有请假记录的学生名单(只要在这个时间之内有请假状态都算,即如果学生在1010-1013日请假也符合要求,注意,只要两个时间段有交叉就应该查出来)

    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文件

  • 相关阅读:
    Memcached
    sleep和wait的区别
    基于.net Core+EF Core项目的搭建(一)
    .net Core中使用AutoMapper
    发布.net core应用程序并部署到IIS上
    IoC原理-使用反射/Emit来实现一个最简单的IoC容器
    浅谈(IOC)依赖注入与控制反转(DI)
    使用MD5加密字符串
    C#中HttpWebRequest的用法详解
    学习memcached的一个网站
  • 原文地址:https://www.cnblogs.com/shiyeyeyeye/p/4998017.html
Copyright © 2020-2023  润新知