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语句,然后我们就可以在数据库中进行增删改查操作,并且将获得的数据输出。这四个接口如下:
- java.sql.DriverManager:处理驱动程序的调入和管理
- java.sql.Connection:负责连接数据库
- java.sql.Statement:负责执行数据库 SQL 语句
- 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();
通过使用上面的方法,可以使我们在操作条件查询、增加、删除以及修改变的更简单、自由,这种方法可以有效的减少我们在编程中的错误,也让代码变的更加简洁。
- java基础:关于JDBC
- java基础1-jdbc
- JAVA基础12--JDBC
- java基础 jdbc
- java基础-jdbc
- Java基础 — JDBC
- java-jdbc开发基础
- java基础--JDBC
- Java基础--JDBC-JavaBean
- Java基础--JDBC-HashMap
- Java JDBC基础
- 【JAVA】JDBC编程基础
- Java JDBC基础
- java JDBC基础流程
- Java基础之JDBC基础
- Java基础(十四)-----JDBC(三)[JDBC高级]
- java基础---->jdbc数据库操作
- 【CXY】JAVA基础 之 JDBC
- 斐波那契
- UICollectionView
- 字符串全排列算法学习总结
- 图片处理.md
- Android 大批量图片显示时候如何避免OOM
- Java JDBC基础
- flexigrid使用心得
- BZOJ 1008 [HNOI2008] 越狱
- Add Digits
- Vue随笔
- RemoveDuplicate from sorted ArrayII
- 代码很烂,所以离职?
- 搭建zookeeper集群
- 安装 gitlab-runner