JDBC编程的基础操作及理解

jdbc编程的基础操作及理解

下面我们先上一段代码 好伐?:
这段代码的主要作用是创建数据库连接、执行查询、更新和关闭数据库连接共计四个功能。

package jdbc;
import java.sql.Connection;
public class ManageJDBC {
     
  private Connection conn=null;//连接对象
  private Statement statement=null;
  public void getconnection(){
     //建立连接对象 注册驱动
   try {
     
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//反射 导入 SQLJDBC4.JAR
    String url = "jdbc:sqlserver://127.0.0.1:1433;databaseName=stu";
    conn = DriverManager.getConnection(url,"sa","123456");
   } catch (Exception e) {
     
    // TODO: handle exception
    e.printStackTrace();
   }
  }
  public ResultSet execute_select(String sql){
     //执行查询语句的函数  ResultSet获取查询结果
   ResultSet rs=null;
   try {
     
    Statement statement=conn.createStatement();//Statement表示的是执行SQL语句的JAVA类
    rs=statement.executeQuery(sql);
   } catch (Exception e) {
     
    // TODO: handle exception
    e.printStackTrace();
   }   
   return rs;
  }
  public int execute_update(String sql){
     //执行更新语句,返回更新语句影响的结果集行数
   int num=0;
   try {
     
    Statement statement=conn.createStatement();
    num=statement.executeUpdate(sql);
   } catch (Exception e) {
     
    // TODO: handle exception
    e.printStackTrace();
   }
   return num;
  }
  public void close(){
     //关闭连接
   try {
     
    if(statement!=null&&conn!=null){
     
     statement.close();
     conn.close();
    }
   } catch (Exception e) {
     
    // TODO: handle exception
    e.printStackTrace();
   }  
  }
  public static void main(String[] args) {
     
   ManageJDBC manageJDBC=new ManageJDBC();
   manageJDBC.getconnection();
   ResultSet rs=manageJDBC.execute_select("select * from stu_1");
   try {
     
    while(rs.next()){
     
     System.out.println(rs.getString("name"));
    }
   } catch (Exception e) {
     
    // TODO: handle exception
    e.printStackTrace();
   }
   
   manageJDBC.close();
  }
}


首先我们要了解步骤

1.连接数据库

2.操作数据库

3.关闭数据库

一、如何连接数据库呢?首先了解Class.forName()适合什么东东?

Class.forName:返回与给定的字符串名称相关联类或接口的Class对象。

他说的什么意思我也看不懂。

那么如何连接呢??主要就是这段代码:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//反射 导入 SQLJDBC4.JAR
    String url = "jdbc:sqlserver://127.0.0.1:1433;databaseName=stu";
    conn = DriverManager.getConnection(url,"sa","123456");

到这里就是建立与数据库的连接了
二、下一步查询数据库


public ResultSet execute_select(String sql){
     //执行查询语句的函数  ResultSet获取查询结果
   ResultSet rs=null;
   try {
     
    Statement statement=conn.createStatement();//Statement表示的是执行SQL语句的JAVA类
    rs=statement.executeQuery(sql);
   } catch (Exception e) {
     
    // TODO: handle exception
    e.printStackTrace();
   }   
   return rs;
  }

我们首先还是了解相关的一下东西:

ResultSet接口:用于保存JDBC执行查询时返回的结果集,该结果集封装在一个逻辑表格中。再ResultSet接口内部有一个指向表格数据行的游标。
Statement接口:用于执行静态的sq语句,并返回一个结果对象。Statement接口对象可以通过Connection实例中的createStatement()(就是这个方法可以创建对象)方法获得。
Statement下属的executeQuery(sql)方法:用于执行select语句,该方法返回一个表示查询结果的ResultSet对象。

即---------对照代码
1.用conn.createStatement创建Statement对象
2.执行sql语句
3.返回执行结果rs


下面我们看看更新功能是不是相同的套路
public int execute_update(String sql){
     //执行更新语句,返回更新语句影响的结果集行数
   int num=0;
   try {
     
    Statement statement=conn.createStatement();
    num=statement.executeUpdate(sql);
   } catch (Exception e) {
     
    // TODO: handle exception
    e.printStackTrace();
   }
   return num;
  }

套路相同,都是先创建对象,执行语句,返回结果。

不过还是有点不一样,返回值不一样,这个就是所使用的方法的问题了,这里我们罗列一下:

Statement接口的3个常用的执行sql语句的方法

方法名称 功能描述
boolean execuate(String sql) 执行sql的各种语句,该方法返回一个boolean类型的值,如果值为true,表示执行的sql语句有查询结果,可通过Statement的getResultSet()方法获得查询结果
int executeUpdate(String sql) 用于执行sql中的insert、update、delete语句。该方法返回一个int类型的值,表示数据库中受该sql语句影响的记录条数
ResultSet executeQuery 用于执行sql中的select语句,该方法返回一个表示查询结果的ResultSet对象

欧啦~~~~~总的来说,增、删、更新代码差不多

三、关闭数据库

public void close(){
     //关闭连接
   try {
     
    if(statement!=null&&conn!=null){
     
     statement.close();
     conn.close();
    }
   } catch (Exception e) {
     
    // TODO: handle exception
    e.printStackTrace();
   }  
  }

1.关闭statement

2.关闭conn

3.关闭manageJDBC

还有个小问题,关闭前为什么要判空?

答:

若程序在执行完第一步(注册驱动)后发生异常,
测试conn和stmt对象还没有被创建,
程序也会进入finaly并调用对象stmt conn的close()方法
此时会报错 空指针异常 ,
为了避免此时的空指针异常,
所以要先判断不为空,再进行关闭

详情参见这位仁兄的博客

你可能感兴趣的:(java,数据库,java)