java数据库的jdbc编程(Java数据库的连接JDBC)

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语句注入问题:

java数据库的jdbc编程(Java数据库的连接JDBC)(1)

(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(); } } } }

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页