JDBC连接数据库的六个步骤

JDBC连接数据库(编辑)步骤(主要有六个步骤)

1.注册JDBC驱动

 Class.forName("com.mysql.jdbc.Driver");//显示的加载到JVM中

2.获取数据库连接

//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.创建一个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  结果集只读,不能修改

6.关闭资源
操作完以后要关闭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();
     }
  }

二.下面是一个简单的(详细的)查询数据的例子

package javacore1;//这是你建的一个包名。
 
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet; //左边这五个是你在写程序时要导入的包名,记住是要在java.sql下的包。
import java.sql.SQLException;
import java.sql.Statement;
public class jdbc { //定义一个类
  public static void main(String[] args){ //主方法
   try{
     String driver="com.mysql.jdbc.Driver"; //1.定义驱动程序名为driver内容为com.mysql.jdbc.Driver
     String url="jdbc:mysql://localhost:3306/test?"/*2.定义url;jdbc是协议;mysql是子协议:表示数据库系统管理名称;localhost:3306是 
                                                     你数据库来源的地址和目标端口;test是我本人建的表位置所在处,你以你的为标准。*/
         + "useUnicode=true&characterEncoding=UTF8"; //防止乱码;useUnicode=true表示使用Unicode字符集;characterEncoding=UTF8表示使用UTF-8来编辑的。
     String user="h4";                  //3.定义用户名,写你想要连接到的用户。
     String pass="111";                 //4.用户密码。
     String querySql="select * from employees";     //5.你想要查找的表名。
     Class.forName(driver);               //6.注册驱动程序,用java.lang包下面的class类里面的Class.froName();方法 此处的driver就是1里面定义的driver,也可以 Class.forName("com.mysql.jdbc.Driver");
     Connection conn=DriverManager.getConnection(url,user,pass);//7.获取数据库连接,使用java.sql里面的DriverManager的getConnectin(String url , String username ,String password )来完成
                                       //括号里面的url,user,pass便是前面定义的2,3,4步骤内容;
     Statement stmt=conn.createStatement();  /*8.构造一个statement对象来执行sql语句:主要有Statement,PreparedStatement,
                                                CallableStatement三种实例来实现,三种实现方法分别为:
                                                Statement stmt = con.createStatement() ; 
                                                PreparedStatement pstmt = conn.prepareStatement(sql) ;  
                                                CallableStatement cstmt = conn.prepareCall("{CALL demoSp(? , ?)}") ;
                                              */
     ResultSet rs=stmt.executeQuery(querySql);//9.执行sql并返还结束 ;ResultSet executeQuery(String sqlString):用于返还一个结果集(ResultSet)对象。
     
   while(rs.next()){  //10.遍历结果集 
   
      //使用getString()方法获取你表里的资料名
     System.out.println("人员编号:"+rs.getString("employee_id")+"工资:"+rs.getString("salary")+"姓名:"+rs.getString("last_name"));
      }
      
   if(rs !=null){//11.关闭记录集
     try{
       rs.close();
     } catch (SQLException e){
      e.printStackTrace();
      }
     }
     
   if(stmt !=null){//12.关闭声明的对象
     try{
       stmt.close();
     }catch(SQLException e){
      e.printStackTrace();
      }
     }
     
   if(conn !=null){//13.关闭连接 (记住一定要先关闭前面的11.12.然后在关闭连接,就像关门一样,先关里面的,最后关最外面的)
     try{
       conn.close();
     }catch(SQLException e){
      e.printStackTrace();
     }
    }
     }catch(Exception e){
      e.printStackTrace();
     }
    }
  }

终于的终于,这些步骤搞清楚了!!!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值