Java数据库的连接JDBC

1、JDBC开发步骤获得连接.使用JDBC中的类,完成对MySQL数据库的连接执行sql语句使用执行者对象,向数据库执行SQL语句获取到数据库的

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

(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://yundeesoft.com/5304.html

(0)
上一篇 2022-12-13 21:20
下一篇 2022-12-13 21:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信