本文实例为大家分享了jdbc工具类实现登录功能的具体代码,供大家参考,具体内容如下
我们使用jdbc实现数据库的增删改查,代码基本差不多,有很多重复,所以我们可以把这些重复的代码写成一个工具类,使用的时候直接调用就可以了。下面以实现登录功能的案例来介绍。
创建数据库,插入数据
|
1 2 3 4 5 6 7 8 9 |
use student; create table user( id int primary key auto_increment, username varchar( 32 ), password varchar( 32 ) );
insert into user values( null , 'zhangsan' , '123' ); insert into user values( null , 'lisi' , '234' ); |
jdbc.properties
|
1 2 3 4 |
url=jdbc:mysql: //localhost:3306/student username=root password=root driver=com.mysql.jdbc.driver |
jdbc工具类
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
package cn.itcast.util;
import java.io.filereader; import java.io.ioexception; import java.net.url; import java.sql.*; import java.util.properties;
/** * jdbc工具类 **/ public class jdbcutils { private static string url; private static string username; private static string password; private static string driver; /** * 文件的读取,著需要读取一次即可拿到这些值,使用静态代码块 **/ static {
try { //1、读取资源文件,获取值 properties properties = new properties();
//获取src路径下的文件的方式 ---> classloader类加载器 classloader classloader = jdbcutils. class .getclassloader(); url resource = classloader.getresource( "jdbc.properties" ); string path = resource.getpath();
//2、加载文件 properties.load( new filereader(path)); //3、获取数据,赋值 url = properties.getproperty( "url" ); username = properties.getproperty( "username" ); password = properties.getproperty( "password" ); driver = properties.getproperty( "driver" ); //4、注册驱动 class .forname(driver); } catch (ioexception e) { e.printstacktrace(); } catch (classnotfoundexception e) { e.printstacktrace(); } }
/** * 获取连接 * @return 连接对象 */ public static connection getconnection() throws sqlexception { return drivermanager.getconnection(url,username,password); }
/** * 释放资源 * @param statement * @param connection */ public static void close(statement statement,connection connection) { if (statement != null ) { try { statement.close(); } catch (sqlexception e) { e.printstacktrace(); } } if (connection != null ) { try { connection.close(); } catch (sqlexception e) { e.printstacktrace(); } } }
/** * 释放资源 * @param resultset * @param statement * @param connection */ public static void close(resultset resultset,statement statement, connection connection) { if (resultset != null ) { try { resultset.close(); } catch (sqlexception e) { e.printstacktrace(); } } if (statement != null ) { try { statement.close(); } catch (sqlexception e) { e.printstacktrace(); } } if (connection != null ) { try { connection.close(); } catch (sqlexception e) { e.printstacktrace(); } } } } |
实现登录功能
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
package cn.itcast.jdbc;
import cn.itcast.util.jdbcutils;
import java.sql.*; import java.util.scanner;
/** * 1、通过键盘录入用户名和密码 * 2、判断用户是否登录成功 */ public class jdbclogin {
public static void main(string[] args) { //1、键盘录入,接收用户和密码 scanner sc = new scanner(system.in); system.out.println( "请输入用户名:" ); string username = sc.nextline(); system.out.println( "请输入密码:" ); string password = sc.nextline(); //2、调用方法 boolean flag = new jdbclogin().login(username,password); //3、判断 if (flag) { system.out.println( "登录成功" ); } else { system.out.println( "用户名或密码错误!" ); } }
/** * 登录方法 */
public boolean login(string username,string password) { if (username == null || password == null ) { return false ; } //连接数据库判断是否登陆成功
connection connection = null ; preparedstatement preparedstatement = null ; resultset resultset = null ; try { //1、获取链接 connection = jdbcutils.getconnection(); //2、定义sql string sql = "select * from user where username = ? and password = ?" ; //3、获取执行sql的对象 //为了防止sql注入,实现事务安全,效率更高,必须要用preparedstatement preparedstatement = connection.preparestatement(sql); //给?赋值 preparedstatement.setstring( 1 ,username); preparedstatement.setstring( 2 ,password); //4、执行查询,不需要传递sql resultset = preparedstatement.executequery(); //5、判断:如果是下一行,则返回true return resultset.next(); } catch (sqlexception e) { e.printstacktrace(); } finally { jdbcutils.close(resultset,preparedstatement,connection); } return false ; } } |
运行结果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
原文链接:https://blog.csdn.net/weixin_44668898/article/details/107412660