JDBC连接数据库步骤及说明

  1. 注册驱动: Class.forName(“com.mysql.jdbc.Driver”);显示的加载到JVM中

  2. 获取连接:
    (1) param1: 要连接数据库的url-----》 String url=“jdbc:mysql://localhost:3306/test?”+ “useUnicode=true&characterEncoding=UTF8”;//防止乱码
    param2:要连接数据库的用户名–》 String user=“h4”;
    param3:要连接数据库的密码----》 String pass=“111”;
    Connection conn=DriverManager.getConnection(url,user,pass);//DriverManager下的方法:getConnection(String url,String username,String password)
    (2)接下来我们分析下url:“jdbc(这是协议以jdbc开头):mysql(这是子协议,数据库管理系统名称)😕/localhost(数据库来源地址):3306(目标端口)/test(要查询的库)?”
    “useUnicode=true&characterEncoding=UTF8”;添加这个是为了防止乱码,指定使用Unicode字符集 ,且使用UTF-8来编辑。
    (3)oracle的写法
    driverClass:oracle.jdbc.driver.OracleDriver
    url:jdbc:oracle:thin:@127.0.0.1:1521:dbname

  3. 创建一个Statement语句对象(主要三种方法):
    Statement stmt=conn.createStatement();//Connection接口下的方法:Statement createStatement()
    PreparedStatement pstmt = conn.PreparedStatement() ;
    CallableStatement cstmt = conn.prepareCall("{CALL demoSp(? , ?)}") ;
    下面我们来分析下他们:
    (1) Statement与 PreparedStatement对象的区别,后者可以动态设置查询参数
    (2)设置参数的方法 PreparedStatement.setXXXX(parameterIndex,value),如果数据库参数类型是varchar 则用setString,如果参数类型是Integer 则用setInt
    (3)CallableStatement.setXXXX(parameterIndex,value) //按照参数的顺序设置value
    CallableStatement.setXXXX(parameterName,value) //按照参数的名字来设置value,这个名字是在定义存储过程的时候的形式参数的名字
    (4)CallableStatement.registerOutParameter方法用于声明一个存储过程输出类型的参数,用以接收存储过程的输出值

  4. 执行SQL语句:
    ResultSet rs=stmt.executeQuery(Sql);除了查询语句是executeQuery();其他全部是executeUpdate();

    Statement接口下的方法:
    boolean execute(String sql):执行SQL语句,如果返回值是结果集则为true,否则为false
    ResultSet executeQuery(String sql):执行SQL语句,返回值为ResultSet
    int executeUpdate(String sql):执行SQL语句,返回值为所影响的行数

  5. 处理结果集:
    ResultSet对象的getXxxx方法,取决于数据库中表的字段的类型,例如:varchar2 对应方法是getString ,如果是 integer 对应方法是getInt/getLong

   While(rs.next()){
                   rs.getInt(columnIndex); //通过列的序号来获取字段的值
                      rs.getString(columnName);//通过列的名字来获取字段的值
       ResultSet接口下常见的方法:beforeFirst();将游标移动到ResultSet中第一条记录(的前面)
                     afterLast();将游标移动到ResultSet中最后一条记录(的后面)
                     absolute(intcolumn):将游标移动到相对于第一行的指定行,负数则为相对于最后一条记录
                     previous():将游标上移一行
                     next():将游标下移一行
    ResultSet.TYPE_SCROLL_SENSITIVE     结果集可以滚动
                     ResultSet.CONCUR_READ_ONLY  结果集只读,不能修改``
  1. 关闭资源:
    操作完以后要关闭jdbc来释放jdbc资源。但是顺序要和你定义对象的时候相反,就像关门一样,从里面先关,一直往外关。
                   if(rs !=null){//1.关闭结果集
                       try{
                          rs.close();
                        } catch (SQLException e){
                           e.printStackTrace();
                        }
                      }
                  if(stmt !=null){//2.关闭声明的对象
                      try{
                         stmt.close();
                       }catch(SQLException e){
                          e.printStackTrace();
                         }
                      }
                  if(conn !=null){//3.关闭连接 (记住一定要先关闭前面的1.2.然后在关闭连接)
                      try{
                         conn.close();
                      }catch(Exception e){
                       e.printStackTrace();
                       }
                    } 

原文章地址,写的很详细

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值