当前位置:Gxlcms > 数据库问题 > JDBC

JDBC

时间:2021-07-01 10:21:17 帮助过:25人阅读

JDBC编码的步骤:
	1、加载驱动并注册驱动
		Class.forName("com.mysql.jdbc.Driver");
		
		说明:在加载Driver类时,它会自动创建自己的实例并向 DriverManager 注册该实例。
		
		com.mysql.jdbc.Driver的源码:
		public class Driver extends NonRegisteringDriver implements java.sql.Driver {

			// Register ourselves with the DriverManager
			static {
				try {
					java.sql.DriverManager.registerDriver(new Driver());
				} catch (SQLException E) {
					throw new RuntimeException("Can't register driver!");
				}
			}

			// Construct a new driver and register it with DriverManager
			public Driver() throws SQLException {
				// Required for Class.forName().newInstance()
			}
		}

	2、获取与数据库的连接:Connection
		Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/oa", "root", "root");
	3、得到代表SQL语句的对象:Statement
		Statement stmt = conn.createStatement();
	4、发送SQL给数据库,如果有查询结果,则得到封装了查询结果的对象:ResultSet
		ResultSet rs  = stmt.executeQuery("select id,name,password,email,birthday from users");
	5、遍历结果
		while(rs.next()){
			System.out.println(rs.getObject("id"));
			System.out.println(rs.getObject("name"));
		}
	6、释放占用的资源
		rs.close();
		stmt.close();
		conn.close();

JDBC中常用的接口和类
	1、DriverManager
		作用:注册驱动,得到数据库的连接
		1.1注册驱动:
			DriverManager.registDriver(new com.mysql.jdbc.Driver());(不可取)
			原因:	1、严重依赖具体的数据库驱动。
					2、导致驱动注册两遍,也就是在内存中会有两个Driver对象
					注:new com.mysql.jdbc.Driver():在new了一个driver的同时使用DriverManager把自己给注册了(查看com.mysql.jdbc.Driver的源码可知)。
			替代方案:
					Class.forName("com.mysql.jdbc.Driver");
			
		1.2获取数据库的连接:
			static Connection getConnection()

	2、Connection
		所有与数据库交互都必须建立在连接的基础上

	3、Statement
		作用:代表着SQL语句
		常用的方法:
			ResultSet executeQuery(String sql)
			int executeUpdate(String sql)
			boolean execute(String sql)
		
		PreparedStatement:处理 DML 语句的利器,有以下3点好处
		
			1、预编译SQL语句,数据库执行效率高。
				注:Statement会使数据库频繁编译SQL,可能造成数据库缓冲区溢出
			2、防止SQL注入
			3、支持参数占位符"?",简化sql语句的编写
		
			PreparedStatement pstmt = conn.prepareStatement("insert into user (username, birthday) values(?,?)");
			pstmt.setString(1, user.getUsername());
			pstmt.setDate(2, new java.sql.Date(user.getBirthday().getTime()));
			pstmt.executeUpdate();

	4、ResultSet
		boolean next():下移一行
		boolean previous():上移一行
		void absolute(int row):第一行的记录就是1
			注:absolute(1) 等效于 first()、absolute(-1) 等效于last()
		void beforeFirst():移动到第一行的前面
		void afterLast():移动到最后一行的后面
		
	5、释放资源
		rs.close();
		stmt.close();
		conn.close();
	
	
	

版权声明:本文为博主原创文章,未经博主允许不得转载。

JDBC

标签:jdbc   drivermanager   connection   statement   resultset   

人气教程排行