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();
- JDBC基础应用(数据库增删改查)
- 数据库JDBC 增删改查
- JDBC连接数据库,增删改查的应用
- java 链接数据库sql jdbc 基础操作 增删改查
- 数据库基础入门(三)——通过JDBC对数据库进行增删改查操作
- 数据库基础入门(三)——通过JDBC对数据库进行增删改查操作
- 基础部分-JDBC增删改查
- 【java基础】JDBC实现增删改查
- JDBC连接oracle数据库(增删改查)
- JDBC连接oracle数据库(增删改查)
- spring-jdbc模板连接数据库(增删改查)
- JDBC数据库的增删改查
- JDBC 对数据库进行增删改查
- javaweb—JDBC数据库增删查改
- JDBC 实现 数据库的增删改查
- JDBC实现数据库增删改查
- JDBC对数据库的增删改查
- JDBC实现数据库的增删改查
- 印刷电路板(PCB)的制作工艺流程
- Django上传文本文件
- thinkphp分页显示
- Android Studio 错误 com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
- JavaMail--基础类详解
- JDBC基础应用(数据库增删改查)
- 在VS2015中用C++创建MFC规则动态库DLL
- dl4j基本环境搭建(win7+64位jdk1.8+IDEA)
- laravel 社区 使用ModelFactory 生产测试数据 artisan 建表
- UVALive-7392 - Bundles of Joy【树型DP】【深搜】【好题】
- "两地三中心"的容灾解决方案
- Effective Modern C++ 条款2 理解auto类型推断
- K sum算法
- 占位符