建立数据库链接的三种方式:

  1. package com.victor_01;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.Driver;
  5. import java.sql.DriverManager;
  6. import java.sql.SQLException;
  7. import java.util.Properties;
  8.  
  9. import org.junit.Test;
  10.  
  11. public class Test1 {
  12. private String url = "jdbc:mysql://192.168.244.144:3306/test";
  13. private String user = "root";
  14. private String password = "123456";
  15.  
  16. @Test
  17. public void test1() throws Exception {
  18. Driver driver = new com.mysql.jdbc.Driver();
  19. Properties prop = new Properties();
  20. prop.setProperty("user", user);
  21. prop.setProperty("password", password);
  22. Connection conn = driver.connect(url, prop);
  23. System.out.println(conn);
  24. }
  25.  
  26. @Test
  27. public void test2() throws SQLException{
  28. Driver driver = new com.mysql.jdbc.Driver();
  29. DriverManager.registerDriver(driver);
  30. Connection conn = DriverManager.getConnection(url, user, password);
  31. System.out.println(conn);
  32. }
  33.  
  34. @Test
  35. public void test3() throws Exception {
  36. Class.forName("com.mysql.jdbc.Driver");
  37. Connection conn = DriverManager.getConnection(url, user, password);
  38. System.out.println(conn);
  39.  
  40. }
  41.  
  42. }

推荐使用第三种,其实第二种和第三种本质上是一种,后者是前者的优化版。

JDBC接口核心的API

  1. JDBC接口核心的API
  2. java.sql.* javax.sql.*
  3.  
  4. |- Driver接口: 表示java驱动程序接口。所有的具体的数据库厂商要来实现此接口。
  5. |- connect(url, properties): 连接数据库的方法。
  6. url: 连接数据库的URL
  7. URL语法: jdbc协议:数据库子协议://主机:端口/数据库
  8. user 数据库的用户名
  9. password 数据库用户密码
  10. |- DriverManager类: 驱动管理器类,用于管理所有注册的驱动程序
  11. |-registerDriver(driver) : 注册驱动类对象
  12. |-Connection getConnection(url,user,password); 获取连接对象
  13.  
  14. |- Connection接口: 表示java程序和数据库的连接对象。
  15. |- Statement createStatement() 创建Statement对象
  16. |- PreparedStatement prepareStatement(String sql) 创建PreparedStatement对象
  17. |- CallableStatement prepareCall(String sql) 创建CallableStatement对象
  18.  
  19. |- Statement接口: 用于执行静态的sql语句
  20. |- int executeUpdate(String sql) 执行静态的更新sql语句(DDLDML
  21. |- ResultSet executeQuery(String sql) :执行的静态的查询sql语句(DQL
  22.  
  23. |-PreparedStatement接口:用于执行预编译sql语句
  24. |- int executeUpdate() 执行预编译的更新sql语句(DDLDML
  25. |-ResultSet executeQuery() 执行预编译的查询sql语句(DQL
  26.  
  27. |-CallableStatement接口:用于执行存储过程的sql语句(call xxx
  28. |-ResultSet executeQuery() 调用存储过程的方法
  29.  
  30. |- ResultSet接口:用于封装查询出来的数据
  31. |- boolean next() 将光标移动到下一行
  32. |-getXX() : 获取列的值

Statement接口

  1. package com.victor_01;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. import java.sql.Statement;
  8.  
  9. import org.junit.Test;
  10.  
  11. public class Demo2 {
  12. private String url = "jdbc:mysql://192.168.244.144:3306/test";
  13. private String user = "root";
  14. private String password = "123456";
  15.  
  16. @Test
  17. public void Test1() {
  18. Connection conn = null;
  19. Statement stmt = null;
  20. ResultSet rs = null;
  21. try {
  22. Class.forName("com.mysql.jdbc.Driver");
  23. conn = DriverManager.getConnection(url, user, password);
  24. stmt = conn.createStatement();
  25.  
  26. String sql = "drop table if exists jdbc_test";
  27. int result = stmt.executeUpdate(sql);
  28. System.out.println("Drop table:" + result);
  29.  
  30. sql = "create table jdbc_test(id int,name varchar(10))";
  31. result = stmt.executeUpdate(sql);
  32. System.out.println("Create result:" + result);
  33.  
  34. sql = "insert into jdbc_test values(1,'hello')";
  35. result = stmt.executeUpdate(sql);
  36. System.out.println("Insert result:" + result);
  37.  
  38. int id = 2;
  39. String name = "world";
  40. sql = "insert into jdbc_test values(" + id + ",'" + name + "')";
  41. result = stmt.executeUpdate(sql);
  42. System.out.println("Insert result2:" + result);
  43.  
  44. name = "java";
  45. sql = "update jdbc_test set name='" + name + "' where id=" + id
  46. + "";
  47. result = stmt.executeUpdate(sql);
  48. System.out.println("Update result:" + result);
  49.  
  50. sql = "select * from jdbc_test";
  51. rs = stmt.executeQuery(sql);
  52. while (rs.next()) {
  53. System.out
  54. .println(rs.getInt("id") + " " + rs.getString("name"));
  55. }
  56. } catch (Exception e) {
  57. e.printStackTrace();
  58. } finally {
  59. if (rs != null) {
  60. try {
  61. rs.close();
  62. } catch (SQLException e) {
  63. e.printStackTrace();
  64. }
  65. }
  66. if (stmt != null)
  67. try {
  68. stmt.close();
  69. } catch (SQLException e) {
  70. e.printStackTrace();
  71. }
  72. if (conn != null)
  73. try {
  74. conn.close();
  75. } catch (SQLException e) {
  76. e.printStackTrace();
  77. }
  78. }
  79.  
  80. }
  81.  
  82. }

PreparedStatement接口

  1. package com.victor_01;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.PreparedStatement;
  6. import java.sql.ResultSet;
  7.  
  8. import org.junit.Test;
  9.  
  10. public class Demo3 {
  11. private String url="jdbc:mysql://192.168.244.144:3306/test";
  12. private String user="root";
  13. private String password="123456";
  14. @Test
  15. public void PreparedStatementTest() throws Exception{
  16. Class.forName("com.mysql.jdbc.Driver");
  17. Connection conn=DriverManager.getConnection(url, user, password);
  18.  
  19. String sql="insert into jdbc_test(id,name) values(?,?)";
  20. PreparedStatement prestmt =conn.prepareStatement(sql);
  21. prestmt.setInt(1, 3);
  22. prestmt.setString(2,"tom");
  23. int result=prestmt.executeUpdate();
  24. System.out.println(result);
  25.  
  26. sql="update jdbc_test set name=? where id=?";
  27. prestmt=conn.prepareStatement(sql);
  28. prestmt.setString(1, "steve");
  29. prestmt.setInt(2, 3);
  30. result=prestmt.executeUpdate();
  31. System.out.println(result);
  32.  
  33. sql="select * from jdbc_test where id=?";
  34. prestmt=conn.prepareStatement(sql);
  35. prestmt.setInt(1, 3);
  36. ResultSet rs= prestmt.executeQuery();
  37. while(rs.next()){
  38. System.out.println("id="+rs.getInt(1)+";name="+rs.getString(2));
  39. }
  40. rs.close();
  41. prestmt.close();
  42. conn.close();
  43. }
  44.  
  45. }

CallableStatement接口

  1. package com.victor_01;
  2.  
  3. import java.sql.CallableStatement;
  4. import java.sql.Connection;
  5. import java.sql.DriverManager;
  6. import java.sql.ResultSet;
  7. import java.sql.Statement;
  8.  
  9. import org.junit.Test;
  10.  
  11. public class Demo3 {
  12. private String url="jdbc:mysql://192.168.244.144:3306/test";
  13. private String user="root";
  14. private String password="123456";
  15. @Test
  16. public void PreparedStatementTest() throws Exception{
  17. Class.forName("com.mysql.jdbc.Driver");
  18. Connection conn=DriverManager.getConnection(url, user, password);
  19. String sql="drop procedure findById";
  20. Statement stmt=conn.createStatement();
  21. int result=stmt.executeUpdate(sql);
  22. System.out.println("drop result:="+result);
  23.  
  24. sql=" CREATE PROCEDURE findById(IN sid INT) BEGIN select * from jdbc_test where id=sid; end";
  25. stmt=conn.createStatement();
  26. result=stmt.executeUpdate(sql);
  27. System.out.println("create result:="+result);
  28.  
  29. //直接调用存储过程
  30. sql="call findById(2)";
  31. CallableStatement stmt1=conn.prepareCall(sql);
  32. ResultSet rs=stmt1.executeQuery();
  33. while(rs.next()){
  34. System.out.println("id="+rs.getInt(1)+",name="+rs.getString(2));
  35. }
  36.  
  37. //传参调用存储过程
  38. sql="call findById(?)";
  39. stmt1=conn.prepareCall(sql);
  40. stmt1.setInt(1, 4);
  41. rs=stmt1.executeQuery();
  42. while(rs.next()){
  43. System.out.println("id="+rs.getInt(1)+",name="+rs.getString(2));
  44. }
  45.  
  46. //带有输出参数的存储过程
  47. sql="drop procedure findById1";
  48. stmt=conn.createStatement();
  49. result=stmt.executeUpdate(sql);
  50. System.out.println("drop findById1 result:"+result);
  51.  
  52. sql=" CREATE PROCEDURE findById1(IN sid INT,OUT sname VARCHAR(10)) BEGIN select name into sname from jdbc_test where id=sid; end";
  53. stmt=conn.createStatement();
  54. result=stmt.executeUpdate(sql);
  55. System.out.println("create result:="+result);
  56.  
  57. sql="call findById1(?,?)";
  58. stmt1=conn.prepareCall(sql);
  59. stmt1.setInt(1, 4);
  60. stmt1.registerOutParameter(2, java.sql.Types.VARCHAR);
  61. stmt1.executeQuery(); //注意:结果不是返回到ResultSet中,而是返回到输出参数中。
  62. String sname=stmt1.getString(2);
  63. System.out.println(sname);
  64.  
  65. rs.close();
  66. stmt1.close();
  67. stmt.close();
  68. conn.close();
  69. }
  70.  
  71. }

  

JDBC常用API小结的更多相关文章

  1. jquery 常用api 小结2

    *一)jQuery常用方法API实战 (1)DOM简述与分类 A)DOM是一种标准,它独立于平台,语言,浏览器. B)如果项目中,你完全按照DOM标准写代码,你就能在各大主流的浏览器中操作标准控件. ...

  2. java数据库 JDBC操作MySQL数据库常用API 部门表和员工表 创建表 添加数据 查询数据

    package com.swift.department; import java.sql.Connection; import java.sql.PreparedStatement; import ...

  3. Java中数据库连接池原理机制的详细讲解以及项目连接数据库采用JDBC常用的几种连接方式

    连接池的基本工作原理 1.基本概念及原理 由上面的分析可以看出,问题的根源就在于对数据库连接资源的低效管理.我们知道,对于共享资源,有一个很著名的设计模式:资源池(Resource Pool).该模式 ...

  4. Unit02: JDBC核心API

    Unit02: JDBC核心API db.properties 注意:如果使用连接池,可以在这个文件中增加对连接池的相关设置: 连接池参数,常用参数有: 初始连接数 最大连接数 最小连接数 每次增加的 ...

  5. JDBC 学习笔记(三)—— JDBC 常用接口和类,JDBC 编程步骤

    1. JDBC 常用接口和类 DriverManager 负责管理 JDBC 驱动的服务类,程序中主要的功能是获取连接数据库的 Connection 对象. Connection 代表一个数据库连接对 ...

  6. Servlet 常用API学习(一)

    Servlet常用API学习 一.Servlet体系结构(图片来自百度图片) 二.ServletConfig接口 Servlet在有些情况下可能需要访问Servlet容器或借助Servlet容器访问外 ...

  7. JDBC主要API学习总结

    JDBC主要API学习 一.JDBC主要API简介 JDBC API 是一系列的接口,它使得应用程序能够进行数据库联接,执行SQL语句,并且得到返回结果. 二.Driver 接口 Java.sql.D ...

  8. Hibernate常用api以及增删改查

    一   .API的定义 所谓的API全称就是(Application Programming Interface,应用程序编程接口).就是类库对外提供的接口.类.枚举.注解等元素. 如:JDK API ...

  9. java:Hibernate框架1(环境搭建,Hibernate.cfg.xml中属性含义,Hibernate常用API对象,HibernteUitl,对象生命周期图,数据对象的三种状态,增删查改)

    1.环境搭建: 三个准备+7个步骤 准备1:新建项目并添加hibernate依赖的jar文件  准备2:在classpath下(src目录下)新建hibernate的配置文件:hibernate.cf ...

随机推荐

  1. 在RNN中使用Dropout

    dropout在前向神经网络中效果很好,但是不能直接用于RNN,因为RNN中的循环会放大噪声,扰乱它自己的学习.那么如何让它适用于RNN,就是只将它应用于一些特定的RNN连接上.   LSTM的长期记 ...

  2. Android屏幕适配笔记

    1.限定符 为了适配不同屏幕大小的android手机或android平板,有时候就需要利用限定符来为不同的屏幕设定不同的布局文件,在一般情况下我们都是在layout文件夹下为某个活动准备一个默认的布局 ...

  3. BOM对象有哪些:

    BOM对象有哪些: 1.window对象 ,是JS的最顶层对象,其他的BOM对象都是window对象的属性: 2.document对象,文档对象: 3.location对象,浏览器当前URL信息: 4 ...

  4. 2016huasacm暑假集训训练五 G - 湫湫系列故事——减肥记I

    题目链接:http://acm.hust.edu.cn/vjudge/contest/126708#problem/G 这是一个01背包的模板题 AC代码: #include<stdio.h&g ...

  5. The Myths about Transactions (ACID) and NoSQL

    There has been widespread characterization of one of the major distinctions between NoSQL and tradit ...

  6. python获取当前时间的用法

    1.先导入库:import datetime 2.获取当前日期和时间:now_time = datetime.datetime.now() 3.格式化成我们想要的日期:strftime() 比如:“2 ...

  7. TCP/IP, WebSocket 和 MQTT

    按照OSI网络分层模型,IP是网络层协议,TCP是传输层协议,而HTTP和MQTT是应用层的协议.在这三者之间, TCP是HTTP和MQTT底层的协议.大家对HTTP很熟悉,这里简要介绍下MQTT.M ...

  8. .NET 4.5.1 预览版新特性

    上个月的微软Build大会上宣布了.NET 4.5.1的推出,Heydarian的这个演讲题为".NET开发中的新内容",涵盖了.NET Framework中一些重要的新特性. H ...

  9. ASP.Net请求处理机制初步探索之旅 - Part 4 WebForm页面生命周期

    开篇:上一篇我们了解了所谓的请求处理管道,在众多的事件中微软开放了19个重要的事件给我们,我们可以注入一些自定义的业务逻辑实现应用的个性化设计.本篇,我们来看看WebForm模式下的页面生命周期. ( ...

  10. [nRF51822] 7、基础实验代码解析大全(前十)

    实验01 - GPIO输出控制LED 引脚输出配置:nrf_gpio_cfg_output(LED_1); 引脚输出置高:nrf_gpio_pin_set(LED_1); 引脚电平转换:nrf_gpi ...