zoukankan      html  css  js  c++  java
  • JDBC初步

     public class TestMySqlConnection{
     public static void main(String[] args){
                 Class.forName("com.mysql.jdbc.Driver"); //加载驱动
                  
    //数据库:格式:jdbc:mysql(sqlserver):   //数据库服务器地址:端口(3306为mysql端口,sqlserver 2005为1433);数据库名称
                 String url = "jdbc:mysql://localhost:3306/db_localTest?useUnicode=true&characterEncoding=gbk;";
                 String userName = "root";
                 String userPwd = "root";
                 Connection con = DriverManager.getConnection(url,userName,userPwd);  //获取connection实例
                 String strsql = "Insert into tb_User() values('','','')";  //sql
                 Statement stmt = con.CreateStatement();  //获取Statement实例
                 stmt.excuteUpdate(strsql);  //执行sql语句
                 con.close();
            }
    }

    Class.forName("驱动路径")      //在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),成功加载后,会将Driver类的实例注册到DriverManager类中。

    备注:DriverManager 类中方法都是静态方法,直接调用

    1、getConnection(String url,String user,String password)     获取connection实例 

    备注:关于URL标示[书写形式:协议:子协议:数据源标识

    1.      协议:在JDBC中总是以jdbc开始   
    2.      子协议:是桥连接的驱动程序或是数据库管理系统名称,如mysql或者sqlserver等
    3.      数据源标识:标记找到数据库来源的地址与连接端口

    2、setLoginTimeout()      //获取驱动程序试图登陆到某一数据库可以等待的最长时间,秒为单位

    3、println(String message)        //将一条消息打印到当前JDBC日志流中

    Connection接口:表示与特地数据库连接。要对数据库中对象操作,首先需要获取数据库连接。

           Connection 实例就像是在应用程序与数据库之间开通了一条渠道。

    Statement接口:用于创建向数据库中传递SQL语句的对象,该接口提供了一些方法可以实现对数据库的常用操作。

    Statement分为3中:

    【1】静态执行SQL语句 ,通过Statement实现;

    【2】执行动态SQL语句,通常通过PreparedStatement实例实现,一般采用这种,预编译方式;可以防止SQL注入。

    【3】执行数据库存储过程,通常通过CallableStatement实例实现。 

             PreparedStatement接口:继承与Statement,用于动态的执行SQL语句,通过PreparedStatement执行的SQL语句,将被预编译保存到PreparedStatement实例中,从而可以反复SQL语句。

      执行SQL语句:

    Statement接口提供了3种执行SQL语句的方法:executeQuery(), executeUpdate()  ,execute()   

    1. 【1】ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句   ,返回一个结果集(ResultSet)对象。   
    2. 【2】int executeUpdate(String sqlString):用于执行INSERT、UPDATE或   DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等   
    3. 【3】execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的语句。   

    ResultSet接口:

       类似于临时表(TempTable),暂时存储数据库查询操作说获取的结果集。

    通过ResultSet获取数据的形式主要是:

    while(rs.next())
    {
      String Name = rs.getString("name");
      String Pwd = rs.getString(2);

    } 

    【列的索引是从左往右编号的,并且从1开始】

    加载数据库驱动:Class.forName(String driverName)  ;

                           DriverManager.getConnection()         获取连接对象

    返回值:返回与带有给定字符串名的类或者接口相关联的Class对象。

                forName() 方法参数指定要加载的数据库驱动,加载成功,会将加载的驱动注册给DriverManager,如果失败,会抛出ClassNotFoundException异常。

    关闭JDBC对象

    1、操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声明顺序相反:

    1. 【1】关闭记录集   
    2. 【2】关闭声明   
    3. 【3】关闭连接对象   

      1  if(rs != null){   // 关闭记录集statement   

     2         try{   
     3             rs.close() ;   
     4         }catch(SQLException e){   
     5             e.printStackTrace() ;   
     6         }   
     7           }   
     8           if(stmt != null){   // 关闭声明   
     9         try{   
    10             stmt.close() ;   
    11         }catch(SQLException e){   
    12             e.printStackTrace() ;   
    13         }   
    14           }   
    15           if(conn != null){  // 关闭连接connection对象   
    16          try{   
    17             conn.close() ;   
    18          }catch(SQLException e){   
    19             e.printStackTrace() ;   
    20      }   
    21  }  

    加载Mysql数据库驱动:

    1 try{
    2   Class.forName("com.mysql.jdbc.Driver");
    3 }catch(Exception e){
    4    e.printStackTrace();
    5 }

    使用PreparedStatement接口中的excuteUpdate()向Mysql中添加数据

    Class.forName("com.mysql.jdbc.Driver");
    String url = "jdbc:mysql://localhost:3306/db_database";
    String userName = "root";
    String userPwd = "root";
    Connection mycon = DriverManager.getConnection(url,userName,userPwd);
    String sql = "Insert into tb_User(username,userPwd,sex,age) values(?,?,?,?)";
    PreparedStatement ps = con.PreparedStatement(sql);
    ps.setString(1,"李四");  //给占位符?赋值  从1开始
    ps.setString(2,"aaa");
    ps.setString(3,"男");
    ps.setInt(4,23);
    ps.excuteUpdate();
    con.close()

    获得查询结果集:

     1 Class.forName("com.mysql.jdbc.Driver");
     2 String url = "jdbc:mysql://localhost:3306/db_database";
     3 String userName = "root";
     4 String userPwd = "root";
     5
     6 Connection con = DriverManager.getConnection(url,userName,userPwd);
     7 Statement stmt = con.CreateStatement();
     8 String sql = "Select * from tb_User";
     9 ResultSet rs = stmt.exuteQuery(sql);
    10 int id,age;
    11 String username,userPwd,sex;
    12 System.out.println("id	 用户名	 性别	 年龄");
    13 while(rs.next()){
    14      id = rs.getInt("id");
    15      username = rs.getString(2);
    16  .
    17  .
    18  .
    19 }

    更改数据库中数据:

     1 public static void main(String[] args){
     2 try{
     3   Class.forName("com.mysql.jdbc.Driver");
     4 }catch(Exception e){
     5    e.printStackTrace();
     6  }
     7 String url = "jdbc:mysql://localhost:3306/db_database";
     8 String userName = "root";
     9 String userPwd = "root";
    10 String sql = "update tb_users set age = 20 where id = 1";
    11 Connection con = DriverManager.getConnection(url,userName,userPwd);
    12 Statement stmt = con.CreateStatement();
    13     stmt.executeUpdate(sql);
    14     System.out.println("修改成功!");
    15 con.close();
    16 }

    使用PreparedStatement 接口中的excuteUpdate方法修改数据库中tb_User

    public static void main(String[] args){
    try{
      Class.forName("com.mysql.jdbc.Driver");
    }catch(Exception e){
      e.printStackTrace();
    }
    String url = "jdbc:mysql://localhost:3306/db_database";
    String userName = "root";
    String userPwd = "root";
    String sql = "update tb_User set username=? where sex = ?";
    Connection con = DriverManager.getConnection(url,userName,userPwd);
    PreparedStatement ps = con.PreparedStatement(sql);
    ps.setString(1,"admin");
    ps.setString(2,"女");
    int count = ps.executeUpdate();
    System.out.println("修改成功!");
    con.close();
    }

    模糊查询:

     1 //模糊查询
     2 public class Test02{
     3 public static void main(String[] args){
     4   Class.forName("driverName");
     5   String url = "jdbc:mysql://localhost:3306;DatabaseName=tb_User";
     6   String username = "root";
     7   String userPwd = "root";
     8   Connection con = DriverManager.getConnection(url,username,userPwd);
     9   Statement stmt = con.CreateStatement();
    10   String sql = "Select * from tb_User where username like '%李%'";
    11   ResultSet rs = stmt.excuteQuery(sql);
    12   int id,age;
    13   String userName,userPwd;sex;
    14   System.out.println("编号	 用户名	 性别	 年龄");
    15 while(rs.next())
    16  {
    17   id = rs.getInt("id");
    18   userName = rs.getString(2);
    19   userPwd = rs.getString("password");
    20   sex = rs.getString(4);
    21   age = rs.getInt("age");
    22   System.out.println(id+"	"+userName+"	"+sex+"	"+age);
    23  }
    24  }
    25 }

    JDBC调用存储过程(有输入参数IN没有输出参数OUT):

     1 public class TestProcedure01{
     2 public static void main(STrng[] args){
     3   System.out.println("------------调用无参数的存储过程------");
     4   Connection con = null;
     5   CallableStatement callstmt = null;
     6 try
     7  {
     8    Class.forName(ProcessProc.DB_Driver);
     9    con = DriverManager.getConnection(DB_Url,DB_Name,DB_Pwd);
    10    callstmt = con.prepareCall("{call TEST_MICHAEL_NOOUT(?,?,?,?)}");
    11
    12   callstmt.setString(1,"jdbc");
    13   callstmt.setString(2,"JDBC");
    14   callstmt.setDouble(3,8000.00);
    15   callstmt.setString(4,"http://sjsky.iteye.com");
    16    callstmt.exceute();
    17   System.out.println("-----End------");
    18  }
    19 catch(Exception e)
    20  {
    21    e.printStackTrace(System.out);
    22 }finally{
    23 if (callstmt!=null) {
    24    callstmt.close();
    25  }
    26 if (con!=null) {
    27    con.close();
    28    }
    29      }
    30    }
    31 }
    34 static class ProcessProc{
    35 private final static String DB_Driver = "mysql.jdbc.driver";
    36 private final static String DB_Url = "jdbc:mysql://localhost:3306;Db_User";
    37 private final static String DB_Name = "root";
    38 private final static STring DB_Pwd = "root";
    39 }

    JDBC批处理http://www.cnblogs.com/QQ931697811/p/5044725.html

  • 相关阅读:
    Largest Rectangle in Histogram
    Valid Sudoku
    Set Matrix Zeroes
    Unique Paths
    Binary Tree Level Order Traversal II
    Binary Tree Level Order Traversal
    Path Sum II
    Path Sum
    Validate Binary Search Tree
    新手程序员 e
  • 原文地址:https://www.cnblogs.com/QQ931697811/p/4425201.html
Copyright © 2011-2022 走看看