JDBC工具类实现登录功能
程序员文章站
2022-03-08 18:53:09
本文实例为大家分享了jdbc工具类实现登录功能的具体代码,供大家参考,具体内容如下我们使用jdbc实现数据库的增删改查,代码基本差不多,有很多重复,所以我们可以把这些重复的代码写成一个工具类,使用的时...
本文实例为大家分享了jdbc工具类实现登录功能的具体代码,供大家参考,具体内容如下
我们使用jdbc实现数据库的增删改查,代码基本差不多,有很多重复,所以我们可以把这些重复的代码写成一个工具类,使用的时候直接调用就可以了。下面以实现登录功能的案例来介绍。
创建数据库,插入数据
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
url=jdbc:mysql://localhost:3306/student username=root password=root driver=com.mysql.jdbc.driver
jdbc工具类
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(); } } } }
实现登录功能
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; } }
运行结果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
下一篇: 刘备的五虎上将中,谁杀的大将最多?