1、JDBC
开发步骤
(1)注册驱动.
告知JVM使用的是哪一个数据库的驱动
(2)获得连接.
使用JDBC中的类,完成对MySQL数据库的连接
(3)获得语句执行平台
通过连接对象获取对SQL语句的执行者对象
(4)执行sql语句
使用执行者对象,向数据库执行SQL语句
获取到数据库的执行后的结果
(5)处理结果
(6)释放资源.(先开的后关)
调用一堆close()方法
package com.oracle.demo01; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class demo01 { public static void main(String[] args) throws ClassNotFoundException, SQLException { //1.注册驱动. //告知JVM使用的是哪一个数据库的驱动 Class.forName("com.mysql.jdbc.Driver"); //2.获得连接. //使用JDBC中的类,完成对MySQL数据库的连接 Connection conn = DriverManager.getConnection ("jdbc:mysql://localhost:3306/ceshi?characterEncoding=utf-8","root","123"); //3.获得语句执行平台 //通过连接对象获取对SQL语句的执行者对象 Statement sta = conn.createStatement(); //4.执行sql语句 //使用执行者对象,向数据库执行SQL语句 //获取到数据库的执行后的结果 String sql = "insert into sort(sname) values (‘护手霜‘)"; int row = sta.executeUpdate(sql); System.out.println(row); //5.处理结果 //6.释放资源(先开的后关) //调用一堆close()方法 sta.close(); conn.close(); } }
再举一个例子:
package com.oracle.difficult; //插入数据 import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class demo01 { public static void main(String[] args) throws ClassNotFoundException, SQLException { //1、注册驱动、告知JVM使用的是哪一个数据库的驱动 //异常ClassNotFoundException Class.forName("com.mysql.jdbc.Driver"); //2、获得连接 //导包 String url = "jdbc:mysql://localhost:3306/ceshi?characterEncoding=gbk";//这里ceshi是数据库 String root = "root"; String password = "123"; //异常SQLException //DriverManager:管理一组 JDBC 驱动程序的基本服务 //Connection:与特定数据库的连接 Connection con = DriverManager.getConnection(url,root,password); //3.获得语句执行平台 //创建一个 Statement 对象来将 SQL 语句发送到数据库 Statement sta = con.createStatement(); //4、执行sql语句 //使用执行者对象 /Statement 对象/ ,向数据库执行SQL语句 //写SQL语句; String sql = "insert into ceshi1(id,sname) values (10,‘剑魂‘)"; //int executeUpdate(String sql) //执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句, //或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)如:CREATE TABLE和DROP TABLE等。 int row = sta.executeUpdate(sql); System.out.println(row); //5、处理结果 //执行insert、update、delete无需处理 //6、释放资源(先开的后关,后开的先关) //调用一堆close()方法 sta.close(); con.close(); } }
需要处理结果集:
package com.oracle.difficult; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class demo03 { public static void main(String[] args) throws ClassNotFoundException, SQLException { //1、注册驱动 Class.forName("com.mysql.jdbc.Driver"); //2、获得连接 String url = "jdbc:mysql://localhost:3306/ceshi?characterEncoding=gbk"; String root = "root"; String password = "123"; Connection con = DriverManager.getConnection(url, root, password); //3、获得语句执行平台 Statement sta = con.createStatement(); //4、执行sql语句 String sql = "select * from ceshi1 where sname = ‘狂战士‘"; //需要导包 import java.sql.ResultSet; ResultSet rs = sta.executeQuery(sql); //5、处理结果 while(rs.next()){ System.out.println(rs.getString("id")+".."+rs.getString("sname")); } //6、释放资源 rs.close(); sta.close(); con.close(); } }
2、数据库的连接
(1)select 查询操作:
执行语句:ResultSet executeQuery(sql);
处理结果集:rs.next();rs.getXxx();
释放资源:ResultSet.close();
(2)预处理对象 PreparedStatement:解决SQL注入问题
sql语句:? 占位符;
获得执行对象:prepareStatement(sql);
执行语句:setXxx(int, Obj);executeQuery();
释放资源:PreparedStatement.close();
举个例子:
package com.oracle.difficult; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Scanner; public class demo04 { public static void main(String[] args) throws ClassNotFoundException, SQLException { //1、注册驱动 Class.forName("com.mysql.jdbc.Driver"); //2、获得连接 String url = "jdbc:mysql://localhost:3306/ceshi?characterEncoding=gbk"; String root = "root"; String password = "123"; Connection con = DriverManager.getConnection(url, root, password); //3、获得语句执行平台 Statement sta = con.createStatement(); //4、执行sql语句 Scanner sc = new Scanner(System.in); System.out.println("请输入用户名:"); String user = sc.next(); System.out.println("请输入密码:"); String pass = sc.next(); String sql = "select count(*) from user where uname = ‘"+user+"‘ "+"and pwd = ‘"+pass+"‘"; //需要导包 import java.sql.ResultSet; ResultSet rs = sta.executeQuery(sql); /*//3、获得语句执行平台(预处理对象,解决SQL注入问题) String sql = "select count(*) from ceshi1 where id = ? and sname = ?"; PreparedStatement past = con.prepareStatement(sql); //4、执行SQL语句 Scanner sc = new Scanner(System.in); System.out.println("请输入用户名:"); int user = sc.nextInt(); System.out.println("请输入密码:"); String pass = sc.next(); past.setInt(1, user); past.setString(2, pass); ResultSet rs = past.executeQuery();*/ //5、处理结果集 int count = 0; while(rs.next()){ count = rs.getInt(1); } if(count > 0){ System.out.println("登录成功!!"); }else{ System.out.println("登录失败"); } //6、释放资源 rs.close(); sta.close(); con.close(); } }
SQL语句注入问题:
(3)JDBCUtils工具类:
将注册驱动、获得连接和释放资源(方法重载)封装起来;
package com.oracle.tools; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class JDBCUtils { public static Connection get() { //1、注册驱动 try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } //2、获得连接 String url = "jdbc:mysql://localhost:3306/ceshi?characterEncoding=gbk"; String root = "root"; String pwd = "123"; Connection conn = null; try { conn = DriverManager.getConnection(url,root,pwd); } catch (SQLException e) { e.printStackTrace(); } return conn; } public static void close(Connection conn,PreparedStatement pst){ if(pst != null){ try { pst.close(); } catch (SQLException e) { e.printStackTrace(); } } if(conn != null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static void close(Connection conn,PreparedStatement pst,ResultSet rs){ if(rs != null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if(pst != null){ try { pst.close(); } catch (SQLException e) { e.printStackTrace(); } } if(conn != null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
原文地址:https://www.cnblogs.com/cgj1994/p/9866884.html
时间: 2024-11-19 22:32:34