jdbc连接数据库和jdbc的核心api
2016-01-16 12:26
423 查看
什么是jdbc?
使用java代码(程序)发送sql语句的技术,就是jdbc技术!!!!
使用jdbc发送sql前提
登录数据库服务器(连接数据库服务器)
数据库的IP地址
端口
数据库用户名
密码
没有jdbc之前由程序员自己编写驱动程序来连接数据库,程序猿需要自己来维护不同的驱动程序,如果数据库改变,驱动程序可能也会随之改变这是相当不方便的!如下图:
jdbc出现以后数据库驱动(规范的实现)由数据库厂商提供符合规范(该规范由sun公司设计的一套通用的java操作不同数据库的接口)的驱动,程序猿只需维护java应用和一套规范不必再维护驱动程序,减轻了程序猿的负担。如下图 :
jdbc的接口在java.sql*\ javax.sql中*
jdbc联接数据库
新建一个Java project JdbcTest 导入相应数据库驱动这里用mysql的驱动
成功结果:
这里推荐使用第二种方式
在调用 getConnection 方法时,DriverManager 会试着从初始化时加载的那些驱动程序以及使用与当前 applet 或应用程序相同的类加载器显式加载的那些驱动程序中查找合适的驱动程序
我们看一下Driver的源码:
在Driver加载时就加载了静态代码块就已经将驱动交给了DriverManager注册,所以在使用Class.forName()加载字节码文件时就已经由DriverManager注了驱动类,这样接下来就可以用DriverManager.getConnection()来拿到连接。
JDBC接口核心的API
在java.sql.* 和 javax.sql.*包中
Driver接口: 表示java驱动程序接口。所有的具体的数据库厂商要来实现此接口。
DriverManager类: 驱动管理器类,用于管理所有注册的驱动程序
Connection接口: 表示java程序和数据库的连接对象。
Statement接口: 用于执行静态的sql语句
PreparedStatement接口:用于执行预编译sql语句
CallableStatement接口:用于执行存储过程的sql语句(call xxx)
ResultSet executeQuery() : 调用存储过程的方法
ResultSet接口:用于封装查询出来的数据
boolean next() : 将光标移动到下一行
getXX() : 获取列的值
使用api
新建一个JdbcCrud类下面我们来使用一下这些核心api
使用java代码(程序)发送sql语句的技术,就是jdbc技术!!!!
使用jdbc发送sql前提
登录数据库服务器(连接数据库服务器)
数据库的IP地址
端口
数据库用户名
密码
没有jdbc之前由程序员自己编写驱动程序来连接数据库,程序猿需要自己来维护不同的驱动程序,如果数据库改变,驱动程序可能也会随之改变这是相当不方便的!如下图:
jdbc出现以后数据库驱动(规范的实现)由数据库厂商提供符合规范(该规范由sun公司设计的一套通用的java操作不同数据库的接口)的驱动,程序猿只需维护java应用和一套规范不必再维护驱动程序,减轻了程序猿的负担。如下图 :
jdbc的接口在java.sql*\ javax.sql中*
jdbc联接数据库
新建一个Java project JdbcTest 导入相应数据库驱动这里用mysql的驱动
这里写代码片package jdbcTest; import java.sql.Connection; import java.sql.Driver; import java.sql.SQLException; import java.util.Properties; import org.junit.Test; public class JdbcDemo1 { // 连接数据库的url private String url = "jdbc:mysql://localhost:3306/sqltest"; // jdbc协议:数据库子协议://主机:端口号/连接的数据库 // 用户名 private String user = "root"; // 密码 private String password = "root"; @Test//第一种方式 public void jdebcTest1() throws SQLException { // 创建驱动程序对象 Driver driver = new com.mysql.jdbc.Driver(); //设置用户名密码 Properties info = new Properties(); info.setProperty("user", user); info.setProperty("password", password); //建立连接 Connection conn = driver.connect(url, info); System.out.println(conn); } @Test//第二种方式 public void jdbcTest2() throws ClassNotFoundException, SQLException{ //加载com.mysql.jdbc.Driver的字节码文件Class.forName(“className”)返回与带有给定字符串名的类或接口相关联的 Class 对象。 Class.forName("com.mysql.jdbc.Driver"); //利用DriverManager(管理一组 JDBC 驱动程序的基本服务)拿到连接 Connection conn=DriverManager.getConnection(url, user, password); System.out.println(conn); } }
成功结果:
这里推荐使用第二种方式
在调用 getConnection 方法时,DriverManager 会试着从初始化时加载的那些驱动程序以及使用与当前 applet 或应用程序相同的类加载器显式加载的那些驱动程序中查找合适的驱动程序
我们看一下Driver的源码:
在Driver加载时就加载了静态代码块就已经将驱动交给了DriverManager注册,所以在使用Class.forName()加载字节码文件时就已经由DriverManager注了驱动类,这样接下来就可以用DriverManager.getConnection()来拿到连接。
JDBC接口核心的API
在java.sql.* 和 javax.sql.*包中
Driver接口: 表示java驱动程序接口。所有的具体的数据库厂商要来实现此接口。
DriverManager类: 驱动管理器类,用于管理所有注册的驱动程序
Connection接口: 表示java程序和数据库的连接对象。
Statement接口: 用于执行静态的sql语句
PreparedStatement接口:用于执行预编译sql语句
CallableStatement接口:用于执行存储过程的sql语句(call xxx)
ResultSet executeQuery() : 调用存储过程的方法
ResultSet接口:用于封装查询出来的数据
boolean next() : 将光标移动到下一行
getXX() : 获取列的值
使用api
新建一个JdbcCrud类下面我们来使用一下这些核心api
这里写代码片package jdbcTest; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import org.junit.Test; public class JdbcCrud { private 4000 String url = "jdbc:mysql://localhost:3306/sqltest"; private String user = "root"; private String password = "root"; @Test public void crudtest() { String name="rose"; int id=5; int math=100; Statement sm = null; Connection conn = null; try { // 注册驱动程序 Class.forName("com.mysql.jdbc.Driver"); // 建立连接 conn = DriverManager.getConnection(url, user, password); // 获得Statement对象用于执行静态 SQL 语句并返回它所生成结果的对象。 sm = conn.createStatement(); String sql = "insert into student(id,name,math) values('"+id+"'+,'"+name+"','"+math+"')"; //sql="update student set math='"+math+"' where id="+id; //sql="delete from student where id="+id; //查询 sql="select *from student"; //返回数据库的结果集 ResultSet rs=sm.executeQuery(sql); while(rs!=null&&rs.next()){ System.out.print(rs.getInt(1)+" "); System.out.print(rs.getString(2)+" "); System.out.println(rs.getInt(3)); } // 执行sql语句 返回受影响行数 //int count = sm.executeUpdate(sql); //System.out.println(count); } catch (Exception e) { e.printStackTrace(); } finally {// 关闭连接 if (sm != null) { try { sm.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
相关文章推荐
- jdbc中的Statement和PreparedStatement接口对象
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序