Java JDBC基础

来源:互联网 发布:淘宝苹果组装机 编辑:程序博客网 时间:2024/04/30 09:19

Java JDBC

JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。


JDBC的四种主要接口:

Java中使用JDBC连接数据库,主要有六个步骤:
1、装载数据库的JDBC驱动程序
2、建立与数据库的连接
3、建立Statement 对象,准备执行SQL语句
4、执行SQL语句
5、处理ResultSet结果集
6、依次关闭ResultSet、Statement和Connection对象

要按照上述步骤处理数据库的数据,我们就要了解下面的四个JDBC接口,这四个接口可以帮助我们链接数据库并且通过Java语言来在数据库中执行SQL语句,然后我们就可以在数据库中进行增删改查操作,并且将获得的数据输出。这四个接口如下:

  1. java.sql.DriverManager:处理驱动程序的调入和管理
  2. java.sql.Connection:负责连接数据库
  3. java.sql.Statement:负责执行数据库 SQL 语句
  4. java.sql.ResultSet:负责存放查询结果

关于处理驱动程序,JDBC针对不同类型的数据库,提供了”驱动程序”的的概念。对于不同的数据库,程序只需要使用不同的驱动厂商驱动连接数据库。以下为常用的几种数据库的驱动程序以及对应的url:

MS SQL Server:驱动程序为:

"com.microsoft.jdbc.sqlserver.SQLServerDriver"

url 为:

 "jdbc:microsoft:sqlserver://[IP]:1433;DatabaseName=[DBName]"

Oracle :驱 动 程 序 为 :

"oracle.jdbc.driver.OracleDriver  " 

url为:

" jdbc:oracle:thin:@[ip]:1521:[sid] "

MySQL 驱动程序为:

com.mysql.jdbc.Driver"   

url为:

"jdbc:mysql://localhost:3306/[DBName]"

JDBC通过Java操作数据库

要想通过Java操作数据库,我们先要与数据库建立连接,然后执行sql语句来操作数据库。在这里,我们以MySql数据库为例来举例。

连接数据库:

//连接数据库的URL,这里我们连接的数据库名称为testdbprivate static final String CONNURL = "jdbc:mysql://localhost:3306/testdb";private static final String USERNAME = "root";//数据库用户名private static final String PASSWORD = "123456";//数据库密码//加载驱动程序Class.forName("com.mysql.jdbc.Driver");////建立连接Connection con = DriverManager.getConnection(CONNURL, USERNAME , PASSWORD);

通过上述的代码,我们就获得了一个Connection类的实例con,这个con就是我们通过JDBC获取的与数据库的连接。

建立了与数据库的连接之后,我们就要对数据库进行增删改查的操作,这里我们就要使用到java.sql.Statement和java.sql.ResultSet,其中Statement可以帮助我们执行sql语句,而ResultSet可以帮助我们保存sql语句的执行结果。

假设,我们的数据库testdb中有一个person表,person表的字段转换为Java如下:

public class Person{    private String name;//姓名    private int age;//年龄    private String sex;//性别}

查找:
我们要对Person表进行查找所有人,就可以使用如下的代码:

    Statement stmt=conn.createStatement();   //创建SQL容器    String sql="select * from person";   //创建sql语句,查询person表中所有数据    ResultSet rs=stmt.executeQuery(sql);   //执行sql语句,并且获得结果集   //遍历结果集    while( rs.next() ) {           System.out.print(rs.getString("name")+"  ");        System.out.print(rs.getString("age")+"  ");        System.out.print(rs.getString("ses")+"  ");        System.out.println();    }    //关闭连接    rs.close();    stmt.close();        conn.close();   

通过上述的代码,我们就可以查询到表person中的所有数据,并且将数据输出。

条件查询
如果我们要查找某个人,那么我们可以在sql语句中加入where条件,来在数据库中查找某个人:

    Statement stmt=conn.createStatement();   //创建SQL容器    String sql="select * from person where name = "dasyang";   //创建sql语句,查询person表中叫dasyang的人    ResultSet rs=stmt.executeQuery(sql);   //执行sql语句,并且获得结果集   //遍历结果集    while( rs.next() ) {           System.out.print(rs.getString("name")+"  ");        System.out.print(rs.getString("age")+"  ");        System.out.print(rs.getString("ses")+"  ");        System.out.println();    }    //关闭连接    rs.close();    stmt.close();        conn.close();   

删除

    Statement stmt=conn.createStatement();   //创建SQL容器    String sql="delete from person where name = "dasyang" ";   //创建sql语句    stmt.executeQuery(sql);   //执行sql语句    //关闭连接    rs.close();    stmt.close();        conn.close();   

增加

    Statement stmt=conn.createStatement();   //创建SQL容器    String sql="insert into person (name,age,sex) values("dasyang",20,"man")";   //创建sql语句    stmt.executeQuery(sql);   //执行sql语句    //关闭连接    rs.close();    stmt.close();        conn.close();   

修改

    Statement stmt=conn.createStatement();   //创建SQL容器    String sql="update person set age=21 where name = "dasyang" ";   //创建sql语句    stmt.executeQuery(sql);   //执行sql语句    //关闭连接    rs.close();    stmt.close();        conn.close();   

在上面的代码中,我们介绍了如何对数据库进行增删改查,但是上面的方法中,比如我们要动态的增加一个人或者修改某个人的数据,我们需要通过代码来控制sql字符串的内容,来达到目的,这样做非常的麻烦,而且一不小心就会出错,接下来我们介绍另一种操作数据库的方法,使用PreparedStatement来操作数据库。

PreparedStatement

以添加数据为例,在很多情况下,具体需要添加的值,是由客户自己输入的,因此,应该是一个个变量。该情况下,SQL 语句的写法就比较麻烦 ,而且依赖了变量,比较容易出错。PreparedStatement 帮助我们解决了这个问题,PreparedStatement 是 Statement 的子接口,功能与 Statement 类似,但是在PreparedStatement我们的数据可以使用?来代替,这里的?充当了占位符,具体表示的数据则可以通过setString(id,value)或者setInt(id,value)等方法来设置,具体的参数是什么类型,我们就使用不同的set方法,如果数据是double类型,我们就使用setDouble(id,value)。其中id表示的是在sql语句中的第几个’?‘,第一个’?‘的id为1。而value则是我们设置的值。

具体的使用举例如下:

条件查找:

    Statement stmt=conn.createStatement();   //创建SQL容器    String sql="select * from person where name = ?”;   //创建sql语句,查询person表中某个人    PreparedStatement ps=conn.prepareStatement(sql);    ps.setString(1, "dasyang");//查找表中叫dasyang的人    ResultSet rs= ps.executeQuery( );   //执行sql语句,并且获得结果集   //遍历结果集    while( rs.next() ) {           System.out.print(rs.getString("name")+"  ");        System.out.print(rs.getString("age")+"  ");        System.out.print(rs.getString("ses")+"  ");        System.out.println();    }    //关闭连接    rs.close();    ps.close();       conn.close();   

插入:

    Statement stmt=conn.createStatement();   //创建SQL容器    String sql="insert into person (name,age,sex) values(?,?,?);   //创建sql语句    PreparedStatement ps=conn.prepareStatement(sql);    ps.setString(1, "dasyang");    ps.setInt(2, 20);    ps.setString(3, "man");    ps.executeQuery( );   //执行sql语句,并且获得结果集    //关闭连接    rs.close();    ps.close();       conn.close();   

删除:

    Statement stmt=conn.createStatement();   //创建SQL容器    String sql="delete from person where name = ?;   //创建sql语句    PreparedStatement ps=conn.prepareStatement(sql);    ps.setString(1, "dasyang");    ps.executeQuery( );   //执行sql语句,并且获得结果集    //关闭连接    rs.close();    ps.close();       conn.close();   

更新:

    Statement stmt=conn.createStatement();   //创建SQL容器    String sql="update person set age=? where name=?;   //创建sql语句    PreparedStatement ps=conn.prepareStatement(sql);    ps.setInt(1, 20);    ps.setString(2, "dasyang");    ps.executeQuery( );   //执行sql语句,并且获得结果集    //关闭连接    rs.close();    ps.close();       conn.close();   

通过使用上面的方法,可以使我们在操作条件查询、增加、删除以及修改变的更简单、自由,这种方法可以有效的减少我们在编程中的错误,也让代码变的更加简洁。

0 0
原创粉丝点击