以连接MySQL为例:

(1)加载MySQL数据库连接的驱动程序。到MySQL官网下载该驱动程序jar包,然后把包复制到WEB-INF/lib目录下,则JDBC会调用Class.forName()方法,将制定的类加载到JVM中:

Class.forName("com.mysql.jdbc.Driver");

(2)设置访问数据库的用户名、密码及连接URL。基本格式是:JDBC协议+数据库的IP地址+数据库端口号+数据库名:

String user = "root";
String pwd = "";
String url = "jdbc:mysql://localhost:3306/db_database07";

(3)通过JDBC API的DriverManager的getConnection()的方法创建与数据库之间的连接,该方法需要上步中定义的三个参数:

Connection conn = DriverManager.getConnection(url, user, pwd);

(4)建立连接后,使用该连接对象conn创建用户操作SQL语句的Statement对象。创建Statement对象用createStatement()方法;或者用Connection对象创建PrepareStatement对象来执行SQL语句,使用的是prepareStatement()方法:

Statement st = conn.createStatement();
//或者用prepareStatement对象
PreparedStatement pst = conn.prepareStatement("select * from tb_user");

(5)调用Statement对象的execute()方法,编译执行sql语句:

String sql = "update from tb_user set age=30 where userId=1";
st.execute(sql);

(6)关闭数据库连接。数据库用完后要及时关闭与数据库之间的连接,释放系统资源。

conn.close();

具体实例:

public static Connection getMySQLCon(){
Connection con = null;
try{
       Class.forName("com.mysql.jdbc.Driver");
String user = "root";
String pwd = "111";
String url = "jdbc:mysql://localhost:3306/db_databanse07";
con = DriverManageer.getConnection(url, user, pwd);
   } catch(Exception e){
e.printStackTrace();
}
return con;
}

JDBC核心API:

JDBC核心API主要包括5个接口:代表数据库连接的Connection接口、驱动程序管理类DriverManager、执行SQL语句的Statement接口、预编译SQL语句的PreparedStatement接口,预编译SQL语句的PreparedStatement接口、结果集ResultSet接口。

PreparedStatement VS Statement

在程序中,最好使用PreparedStatement对象,因为它使程序具有良好的可维护性和可读性;PreparedStatement对象预编译SQL语句可以提高程序的性能,而Statement对象的SQL语句每次执行都需要编译,可以提高程序的安全性。

PreparedStatement中SQL语句的预编译是怎么执行的?

PreparedStatement在执行第一次编译后,将SQL语句存放在数据库中,类似于key-value对应的方式存储,当下一次将同样的SQL语句发送到数据库时,如果数据库查找到有相应的key存在,则直接调用编译过的SQL,避免了重复编译语句的过程,从而提高数据库性能。

最新文章

  1. 如何创建独立的UE4服务端
  2. Python简单练习
  3. [Python] urllib2.HTTPError: HTTP Error 403: Forbidden
  4. NOIP2011多项式系数[快速幂|组合数|逆元]
  5. 跨Controllers传数据
  6. 【转】ubuntu 重启命令,ubuntu 重启网卡方法
  7. 3Git使用入门
  8. POJ 2492 A Bug's Life (并查集)
  9. Cheap CK100 1024 tokens NXP FIX Chip on Eobd2
  10. Firemonkey的旁门左道[四]
  11. nova的wsgi介绍【WIP】
  12. 为什么需要Page Object?
  13. mac 压缩png图片资源 pngcrush命令
  14. 北漂面试经历(一(两)年工作经验)-- Java基础部分
  15. freemarker中的if...elseif...else语句
  16. php 制作圆形图片
  17. python2到python3代码转化:2to3
  18. [Swift]LeetCode636. 函数的独占时间 | Exclusive Time of Functions
  19. CSS3 filter(滤镜)
  20. activemq生产者和消费者的双向通信

热门文章

  1. 表单验证(JQ)
  2. PHP 序列化与反序列化简单理解
  3. vi/vim连续注释
  4. 复位自动ID的问题有兩種方法
  5. mongodb的学习之旅一
  6. (数据科学学习手札04)Python与R在自定义函数上的异同
  7. Win10正式版激活
  8. MSSQL如何查看当前数据库的连接数 【转】
  9. 设置Git 记住密码
  10. Hibernate-ORM:04.Hibernate中的get()和load()