JDBC基础应用(数据库增删改查)

来源:互联网 发布:python 3程序开发指南 编辑:程序博客网 时间:2024/04/30 18:39

一、JDBC:解决java与数据库的连接。JDBC框架:


二、JDBC驱动程序类型:

1、JDBC-ODBC桥驱动程序:将JDBC方法调用转换为开放数据库连接(ODBC)函数调用。使Java应用程序能够使用支持ODBC驱动程序的任何数据库,通常使用独立应用程序(本地使用)。

其中,开放数据库连接(ODBC)由微软发起的,很多其他数据库厂商认同的连接方式

2、本机API驱动程序:将JDBC调用映射到本机方法调用,它们传递到本地的本机调用级接口(CLI)。本机API驱动程序没有ODBC中间层。

性能优于JDBC-ODBC桥驱动程序,通常用于基于网络的应用程序。

3、网络协议驱动程序:由客户机(包含纯Java函数)和服务器( 包含Java和本机方法)组成。

Java应用程序将JDBC调用发送到网络协议驱动程序客户机部分,后者将JDBC调用转换为数据库调用。数据库调用被发送到网络协议驱动程序服务器部分,这部分将请求转发给数据库。使用网络协议驱动程序时,在服务器上加载CLI本机库。

4、本机协议驱动程序:使用供应商(各种数据库)特定网络协议直接与数据库交互的Java驱动程序,使用时无需安装任何供应商特定的库。

每个数据库都有特定的本机协议驱动程序。

三、使用JDBC API

1、JDBC API包:java.sql 或者javax.sql

2、借助JDBC API和驱动程序建立java与数据库的连接(数据库ip地址,数据库名称,用户名,密码)

3、JDBC API中常用的类和接口:

1)DriverManager类:载入数据库的驱动程序;

2)Driver接口:表示数据库驱动程序,所有JDBC驱动程序必须实现Driver接口。

3)Connection接口:支持建立java应用程序和数据库之间的连接。建立连接后如果不关闭,则一直在内存中,所有在程序后面,使用close()方法关闭。

4)Statement接口:支持执行SQL语句。

5)ResultSet接口:表示从数据库检索到的信息,所有查询到的数据。

6)SQLException类:提供与数据库交互时发生的异常的相关信息。

4、写JDBC代码的步骤:

1)在项目中添加驱动程序:(操作:右键项目,点击my--->build Path--->add external Archiver...选择jdbc驱动,点击确定。)

其中,.jar里面都是编译完成的java应用程序。都是class文件,是java的可执行程序

2)加载驱动程序(不同的数据库,需要不同的驱动):

try{    Class.forName("com.mysql.jdbc.Driver");//按照驱动程序的名字加载驱动,参数表示驱动的名字}catch (ClassNotFoundException e) {<pre name="code" class="java">    e.printStackTrace();}

驱动程序名称的来源:

3)建立连接,有以下2种方式:

DriverManager.getConnection("jdbc:mysql://数据库IP地址:端口号/数据库名称?用户名&密码");DriverManager.getConnection("jdbc:mysql://localhost:3306/sh?user=shde&password=123456");Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/sh","shde","123456");

其中:localhost是本机IP地址的替换写法,?代表传一个参数。

4)操作数据库:

Statement stmt=conn.createStatement();stmt.executeQuery("");//执行查询select语句 返回ResultSetstmt.executeUpdate("");//执行更新,包括update/insert/delete语句 返回受影响的行数stmt.execute("");//执行任何的SQL语句 包括create table/alter table 返回boolean类型

5)保存结果集

ResultSet rs=stmt.executeQuery("select * from employee");

6)使用结果集

//rs.next();//向前滑动游标,判断结果集里面是否有下一条数据,如果存在数据,则取出while(rs.next()){    //游标返回的是一行数据,需要一列,一列的取出来   System.out.print(rs.getInt(1)+" ");//把第一列的数据取出,转换为整型   System.out.println(rs.getObject(1));   System.out.print(rs.getString(2)+" ");   System.out.print(rs.getInt(3)+" ");}

如查询数据库的代码如下:

import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class JDBCDemo {public static void main(String[] args) {final String driver="com.mysql.jdbc.Driver";try {Class.forName(driver);Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/sh","sh","123456");Statement stmt=conn.createStatement();ResultSet rs=stmt.executeQuery("select * from employee");while(rs.next()){System.out.print(rs.getInt(1)+" ");//把第一列的数据取出,转换为整型//System.out.println(rs.getObject(1));System.out.print(rs.getString(2)+" ");System.out.print(rs.getInt(3)+" ");}stmt.close();//关闭连接,清除内存中的连接conn.close();//关闭连接,清除内存中的连接} catch (ClassNotFoundException e) {//当驱动程序不存在或错误时报该异常e.printStackTrace();} catch (SQLException e) {//建立连接失败e.printStackTrace();}}}
5、使用JDBC添加、修改、删除数据到数据库:

import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;public class InsertDemo {public static void main(String[] args) {final String driver="com.mysql.jdbc.Driver";try {Class.forName(driver);Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/sh","sh","123456");Statement stmt=conn.createStatement();//executeUpdate方法返回0则处理失败,大于0返回受影响的行数int count2=stmt.executeUpdate("delete from employee where id=110");int count=stmt.executeUpdate("insert into employee values(110,'李',27,15000,'欧洲',101)");int count1=stmt.executeUpdate("update employee set name='恁',age=29 where id=109");if(count==0){System.out.println("数据添加失败");}else{System.out.println("成功添加数据:"+count+"条");}if(count1==0){System.out.println("数据更新失败");}else{System.out.println("成功更新数据:"+count+"条");}if(count2==0){System.out.println("数据删除失败");}else{System.out.println("成功删除数据:"+count+"条");}stmt.close();conn.close();} catch (ClassNotFoundException e) {//当驱动程序不存在或错误时报该异常e.printStackTrace();} catch (SQLException e) {//建立连接失败e.printStackTrace();}}}
6、JDBC代码常见的异常:

1)ClassNotFoundException:检查驱动的名称,是否为“com.mysql.jdbc.Driver”;检查是否添加了Jar包。

2)java.sql.SQLException:No suitable driver found:驱动jar包的版本不正确;或者协议错误(正确协议:jdbc:mysql://)。

3)java.sql.SQLException: Access denied for user 'sh'@'localhost' (using password: YES):用户sh的密码不正确。

4)com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax;:sql语句有误。

5)当更新的中文数据在数据库显示乱码:

      a)检查数据库、表的字符集是否为UTF8;

      b)检查java代码所属项目的字符类型是否为GBK;

      c)在java代码的数据库连接中添加字符集参数(characterEncoding=utf-8),如下:

   Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/sh?characterEncoding=utf-8&user=sh&password=123456");
6)更新数据中,界面上接受的数据都是字符串类型,注意转型。

      a)如插入数据是int类型,获取界面上的id值,则转换如下:

   int id=Integer.parseInt(id.getText())
      b)如插入数据是String类型,获取界面上的name值,则转换如下:
   String name=name.getText();



1 0
原创粉丝点击