原生Jdbc操作Mysql数据库开发步骤
原生Jdbc操作Mysql数据库开发步骤
原生的Jdbc就是指,不使用任何框架,仅用java.sql包下的方法实现数据库查询等的操作。
下面是开发步骤:
1、导入数据库驱动包
-mysql-connector-java-5.1.7-bin.jar
2、准备参数
-url () 链接url格式:(jdbc:mysql://主机名:端口号/数据库名字)
通常我们会在链接后添加编码方式: useUnicode=true&characterEncoding=UTF-8
-username 数据库访问的用户名
-password 数据库访问密码
-driver com.mysql.jdbc.Driver 内容是数据库驱动包中Driver类的全类名
3、加载数据库驱动 (使用反射的方式)
Class.forName(driver)
4、通过数据库驱动获取数据库链接
Connection conn = DriverManager.getConnection(url,username,passworrd);
5、编写sql语句
增加 - INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
删除 - DELETE FROM 表名称 WHERE 列名称 = 值
更新 - UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
查询 - SELECT 列名称 FROM 表名
6、通过链接获取执行对象
包含Statement 和 PrepareStatement ,由于PrepareStatement是预编译执行,且效率高、还能防止sql注入,因此在这只使用PrepareStatement讲解。
prepareStatement = conn.prepareStatement(sql);
若sql语句中有占位符“?”,则需要进行传入参数
prepareStatement.setObject(i,object); //其中i从1开始
7、执行sql语句
若为增删改操作,使用executeUpdate()方法,返回值为受影响行数,为int类型。
int result = pStatement.executeUpdate();
若为查询操作,使用executeQuery()方法,返回值将是一个结果集,因此需要遍历出结果集。
ResultSet resultSet = pStatement.executeQuery();
遍历resultSet
while(resultSet.next()){
Object object = resultSet.getObject(“表单列或者列号”);
}
8、关闭资源和连接
倒序关闭,先关闭resultSet,再关闭prepareStatement,再关闭conn.
以下是原生操作的代码,以查询为例:
1 private static final String URL = "jdbc:mysql://127.0.0.1:3306/test"; 2 private static final String USERNAME = "root"; 3 private static final String UPASSWORD = "123456"; 4 private static final String UDRIVER = "com.mysql.jdbc.Driver"; 5 6 public static void main(String[] args){ 7 Connection conn = null; 8 PreparedStatement pStatement = null; 9 ResultSet resultSet = null; 10 /* 11 * 编写sql语句 12 * 假设test表中只有int类型的id varcher类型的uname两列 13 * ? 为通配符,留作参数传入 14 */ 15 String sql ="SELECT id,uname FROM test WHERE id > ?"; 16 try { 17 //加载驱动 18 Class.forName(UDRIVER); 19 //获取链接 20 conn = DriverManager.getConnection(URL, USERNAME, UPASSWORD); 21 //获取链接执行对象 22 pStatement = conn.prepareStatement(sql); 23 /* 24 * 将参数传入 25 * 此处根据参数类型的不同选用不同的方法传入 26 * ###其中第一个参数parameterIndex是从1开始计数## 27 */ 28 pStatement.setInt(1, 3); 29 //执行Sql语句 30 resultSet = pStatement.executeQuery(); 31 //遍历结果集 32 while(resultSet.next()){ 33 Integer id = resultSet.getInt("id"); 34 String uname = resultSet.getString("uname"); 35 System.out.println("用户ID为 : "+id+",用户名为: "+uname); 36 } 37 } catch (ClassNotFoundException e) { 38 // TODO Auto-generated catch block 39 e.printStackTrace(); 40 } catch (SQLException e) { 41 // TODO Auto-generated catch block 42 e.printStackTrace(); 43 } finally { 44 //逆序关闭资源 45 try { 46 if(resultSet!=null){ 47 resultSet.close(); 48 } 49 if(pStatement!=null){ 50 pStatement.close(); 51 } 52 if(conn!=null){ 53 conn.close(); 54 } 55 } catch (SQLException e) { 56 // TODO Auto-generated catch block 57 e.printStackTrace(); 58 } 59 } 60 }