jdbc程序
1. 创建JAVA工程 加入jar包
数据库驱动包(mysql)
其实只需要上边的驱动包,因为用的是 Mysql ,一般版本不是问题 ,本机是mysql 5.6
下边的是oracle 驱动包
2. 创建 jdbcTest工程
1 package cn.itcast.mybatis.jdbc; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.PreparedStatement; 6 import java.sql.ResultSet; 7 import java.sql.SQLException; 8 9 10 public class jdbcTest { 11 public static void main(String[] args) throws SQLException{ 12 //数据库链接 13 Connection connection =null; 14 //预编译的 statement , 使用预编译 以提高数据库性能 15 PreparedStatement preparedStatement = null; 16 //结果集 17 ResultSet resultSet=null; 18 19 try{ 20 //加载数据库驱动 21 Class.forName("com.mysql.jdbc.Driver"); 22 23 connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8","root",""); 24 String sql = "select * from user where username = ? and id = ?"; 25 preparedStatement = connection.prepareStatement(sql); 26 27 preparedStatement.setString(1, "王五"); 28 preparedStatement.setString(2, "1"); 29 30 resultSet = preparedStatement.executeQuery(); 31 32 while(resultSet.next()){ 33 System.out.println(resultSet.getString("id")+resultSet.getString("username")); 34 } 35 }catch(Exception e){ 36 e.printStackTrace(); 37 }finally{ 38 resultSet.close(); 39 preparedStatement.close(); 40 connection.close(); 41 } 42 } 43 }
3. jdbc使用 驱动
jdbc全称是什么?
Java DataBase Connectivity
即是java的数据库连接 建立
那么所需3个方面
1> 建立的链接 对象 Connection connection
2> 建立的预编译 statement声明 对象 PreparedStatement preparedStatement
3>查询到的结果集对象 ResultSet resultSet
接下来是 如何使用 jdbc 进行数据库链接 和操作的过程
1> 加载驱动 Class.forname(com.mysql.jdbc.Driver);
在驱动包中找到 Driver.class文件 copy qualifiedname 即可
2>为链接connection 赋值url+端口
conneciton = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","test","");
格式为 jdbc:数据库类型名://地址:端口/数据库名 username userpassword
3>定义 所要执行的sql语句 是什么
String sql ="select * from user where username = ? and id= ?"
站位符 "?" 的作用即是 保留字段 由待会的提交 值保存
preparedStatement.setString(index,"value");
第一个是第几个问号 第二个是存入值
实际上 替代? 的形式 ‘value‘ 所以显然不能替代 一些如 column 的属性名
4> 执行这个预编译 返回结果集
resultSet = preparedStatement.executeQuerry();
结果集中输入相应 column属性 即可获得查询值
resultSet.getstring("id")
5>释放资源
顺序倒过来: resultSet.close() preparedStatement.close() connection.close()
4. 原生态jdbc问题 :
1> 数据库连接, 使用时创建 不使用立即释放,对数据库频繁连接 和关闭, 造成数据资源浪费 影响数据库性能
何解——> 数据库连接池
2> sql语句在java代码中, 这是硬编码的方式, 如果sql语句修改,需要重新编译java代码,
preparedStatement 中设置参数,同样硬编码在java代码中
何解——> SQL语句、占位符等变量 放在xml文件中配置
3> 结果集中 resultSet 依然是硬编码 获取表的字段
何解——> 将查询的结果集 自动映射为java对象