JDBC的学习总结
来源:互联网 发布:用友软件记账流程 编辑:程序博客网 时间:2024/06/16 18:30
今天学习了一下JDBC,作为一个初学者,只是初步的了解了一下JDBC。
JDBC API提供了以下接口和类:
DriverManager: 这个类管理数据库驱动程序的列表。内容是否符合从Java应用程序使用的通信子协议正确的数据库驱动程序的连接请求。识别JDBC在一定子协议的第一个驱动器将被用来建立数据库连接。
Driver: 此接口处理与数据库服务器通信。很少直接与驱动程序对象。相反,使用DriverManager中的对象,它管理此类型的对象。它也抽象与驱动程序对象工作相关的详细信息
Connection : 此接口与接触数据库的所有方法。连接对象表示通信上下文,即,与数据库中的所有的通信是通过唯一的连接对象。
Statement : 可以使用这个接口创建的对象的SQL语句提交到数据库。一些派生的接口接受除执行存储过程的参数。
ResultSet: 这些对象保存从数据库后,执行使用Statement对象的SQL查询中检索数据。它作为一个迭代器,让您可以通过移动它的数据。
SQLException: 这个类处理发生在一个数据库应用程序的任何错误。
JDBC的一般执行步骤:
导入数据包: 要求包括含有需要进行数据库编程的JDBC类的包。大多数情况下,使用 import java.sql.* 就可以了。
注册JDBC驱动程序:要求初始化驱动程序,使它可以与数据库打开一个通信通道。
Class.forName(“com.mysql.jdbc.Driver”);
打开一个连接:要求中使用DriverManager.getConnection()方法创建一个Connection对象,它代表与数据库服务器的物理连接。
Connection conn = DriverManager.getConnection(String url);
执行操作: INSERT,DELETE,UPDATE,SELECT等
String sql = “INSERT INTO USERINFO VALUES()”;
stmt.executeUpdate(sql);
清理环境:需要明确地关闭所有的数据库资源相对依靠JVM的垃圾收集。
stmt.close();
conn.close();
- 关于executeQuery()和executeUpdate()方法的区别
a. executeQuery()主要用来执行 SELECT语句, 产生单个结果集:ResultSet rs;
b.executeUpdate()主要用来执行INSERT,DELETE,UPDATE和SQL DLL(数据定义语言)语句.
执行insert,delete,update时返回受影响的行数
执行CREATE TABLE,DROP TABLE等不操作行的语句时,返回0; - 占位符的使用
package com.study.dao;//导入数据包import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;import java.sql.Statement;public class JDBCTest{ public static void main(String[] args) throws SQLException { Statement stmt = null; Connection conn = null; try { //注册jdbc驱动程序 Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/test2?" + "user=root&password=root&useUnicode=true&characterEncoding=UTF8"; conn = DriverManager.getConnection(url);//打开一个链接 stmt = conn.createStatement(); //String sql = "DROP TABLE REGISTRATION ";//因为之前表存在所以先删除这张表 //stmt.executeUpdate(sql); String sql = "CREATE TABLE REGISTRATION " + "(id INTEGER not NULL, " + " first VARCHAR(255), " + " last VARCHAR(255), " + " age INTEGER, " + " PRIMARY KEY ( id ))"; stmt.executeUpdate(sql);//创建一张Registration表 sql = "INSERT INTO REGISTRATION VALUES(?, ?, ?, ?)";//? 占位 PreparedStatement pstm=conn.prepareStatement(sql); for ( int i = 0; i < 10; i++ ) { pstm.setInt(1, i + 1); pstm.setString(2, "wang"+i); pstm.setString(3, "xiaoming"+i); pstm.setInt(4, 12+i); pstm.executeUpdate(); } pstm.close(); stmt.close(); conn.close(); } catch (SQLException se) { // Handle errors for JDBC se.printStackTrace(); } catch (Exception e) { // Handle errors for Class.forName e.printStackTrace(); } finally { // finally block used to close resources try { if (stmt != null) stmt.close(); } catch (SQLException se) { } // do nothing try { if (conn != null) conn.close(); } catch (SQLException se) { se.printStackTrace(); } // end finally try } // end try }}
- 异常处理
驱动加载错误
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
在WebConnect->WEB-INF->lib路径下加入mysql-connector-java-5.1.7-bin.jar包
未完待续。。。
(若有什么不对的地方欢迎批评教育,谢。)
参考文章:https://www.douban.com/note/247653686/
推荐学习:http://www.yiibai.com/jdbc/jdbc-insert-records.html
- JDBC的学习总结
- 学习JDBC的总结
- 学习jdbc的总结
- 牛人写的 JDBC学习-总结- -
- Jdbc的学习,全面总结
- JDBC学习精华总结
- JDBC学习总结
- JDBC学习总结
- JDBC学习总结
- JDBC 学习总结
- JDBC学习总结
- jdbc 学习总结
- jdbc template 学习总结
- jdbc 学习总结一
- jdbc学习总结二
- JDBC学习总结
- JDBC学习总结
- JDBC基础学习总结
- LeetCode 1. Two Sum
- c++ iostream库的一些讨论
- 辛星浅析array_walk()和array_map()的联系和区别
- 给定两个有序数组,找出合并之后的数组中位数
- C# WPF 按钮模板
- JDBC的学习总结
- POJ 3211 Washing Clothes(01背包/可行性判断)
- 带模板参数的运算符重载
- 在阿里云中编译Linux4.5.0内核 - Ubuntu内核编译教程
- LeetCode 107 Binary Tree Level Order Traversal II
- 译:Google的大规模集群管理工具Borg(一)------ 用户视角的Borg特性
- 用启动U盘安装ubuntu14.04
- 309. Best Time to Buy and Sell Stock with Cooldown
- 232. Implement Queue using Stacks