Java连接数据库登录注册

发布时间: 2023-11-21 13:26 阅读: 文章来源:1MUMB5203PS

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(); } } }}
•••展开全文