0


JDBC:IDEA实现用户登录和MySQL数据库的连接

注意,不同的版本的jar包,在连接时可能存在差异

第一步创建数据库

注意:该表u在数据库db6中

CREATETABLE u(
id INTAUTO_INCREMENTPRIMARYKEY,
NAME VARCHAR(20),
PASSWORD VARCHAR(20))ENGINE=INNODBDEFAULTCHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;INSERTINTO u VALUES(1,'wzm','111111');INSERTINTO u VALUES(NULL,'zcc','222222');INSERTINTO u VALUES(NULL,'张三','333333');

在这里插入图片描述

第二步创建项目

在这里插入图片描述

在这里插入图片描述

第三部

在所生成的项目模块创建一个目录,放jar包
在这里插入图片描述
这里设置名称为libs
创建

复制jar包,注意这里使用的jar版本。不同版本在后续连接可能存在差异
在这里插入图片描述
在这里插入图片描述
点击确定后创建成功,在右击libs,点击添加为库,点击确认在这里插入图片描述
注意,添加的模块
在这里插入图片描述

第四步,写代码,这里小编写了3个类和一个配置文件

在这里插入图片描述

例题:登录程序要求:

  1. 打印所有数据库成员信息
  2. 查询是否存在

user类

/*
 *@Student 张策
 */publicclass user {//创建user类储存从数据库中提取的数据,将来privateint id;//存入集合打印遍历集合即可完成要求一privateString name;privateString password;publicintgetId(){return id;}publicvoidsetId(int id){this.id = id;}publicStringgetName(){return name;}publicvoidsetName(String name){this.name = name;}publicStringgetPassword(){return password;}publicvoidsetPassword(String password){this.password = password;}@OverridepublicStringtoString(){return"u{"+"id="+ id +", name='"+ name +'\''+", password="+ password +'}';}}

主程序:Text1

importjava.sql.*;importjava.util.ArrayList;importjava.util.List;importjava.util.Scanner;/*
 *@Student 张策
 */publicclassText1{publicstaticvoidmain(String[] args){List<user> findall =newText1().findall();//创建对象,调用方法,返回集合。System.out.println(findall);//打印集合Scanner scanner =newScanner(System.in);//输入System.out.println("请输入用户名");String name = scanner.nextLine();//输入System.out.println("请输入密码");String password = scanner.nextLine();if(login(name, password)){//下方创建将login方法,bollean类型System.out.println("登录成功");}else{System.out.println("登录失败");}}publicstaticbooleanlogin(String name,String password){if(name==null||password==null){//判断输入是否合理returnfalse;}Connection conn=null;//定义了一个Connection对象,名为conn,初始值为null。Connection对象代表数据库连接。PreparedStatement pre=null;//定义了一个PreparedStatement对象,名为pre,初始值为null。PreparedStatement对象用于执行预编译的SQL语句。ResultSet resultSet=null;//定义了一个ResultSet对象,名为resultSet,初始值为null。ResultSet对象存储了从数据库查询返回的结果集。try{
        conn =JDBCUtils.getConnection();//调取下方创建的JDBCUtils类中的方法,返回String sql="SELECT * FROM u WHERE NAME=? AND PASSWORD=?";//编写SQL语句
        pre= conn.prepareStatement(sql);//使用Connection对象conn的prepareStatement方法创建一个PreparedStatement对象,并将SQL查询语句作为参数传入。
        pre.setString(1,name);//调用PreparedStatement对象的setString方法设置第参数的值,这里的1表示参数的位置,name是要设置的值。
        pre.setString(2,password);//同上
        resultSet = pre.executeQuery();//调用PreparedStatement对象的executeQuery方法执行查询,并将返回的结果集赋值给ResultSet对象resultSet。return resultSet.next();//调用ResultSet对象的next方法判断结果集中是否有下一条记录,如果有则返回true,否则返回false。}catch(SQLException e){
        e.printStackTrace();}finally{JDBCUtils.close(resultSet,pre,conn);//调用下方的的JDBCUtils类关闭空间}returnfalse;}publicstaticList<user>findall(){//将数据库的数据存入集合中并且返回集合List<user> list =newArrayList<>();Statement statement=null;//定义了一个Statement对象,名为statement,初始值为null。Statement对象用于执行SQL语句。和PreparedStatement 类似//这里仅仅演示Statement ,建议使用上方的PreparedStatement ResultSet re=null;Connection connection=null;try{//2.获取数据库连接对象
            connection =JDBCUtils.getConnection();//3.定义sql语言String mysql="select*from u";//获取执行sql的对象 statement
            statement = connection.createStatement();//执行sql
            re = statement.executeQuery(mysql);
            user acc=null;while(re.next()){//如果存在就返回true并且指针指向数据库的下一个数据int anInt = re.getInt("id");//依次提取数据库中的id,name,password列String string = re.getString("name");String anInt1 = re.getString("password");
                acc =newuser();//创建一个对象储存每一个用户
                acc.setId(anInt);//依次将提取的数据,设置为上面刚建立的对象的属性
                acc.setName(string);
                acc.setPassword(anInt1);
                list.add(acc);//将对象存入集合}}catch(SQLException e){
            e.printStackTrace();}finally{JDBCUtils.close(re,statement,connection);//关闭}return list;}}

工具类JDBCUtils :写有,关闭数资源,连接数据库的操作

importjava.io.FileReader;importjava.io.IOException;importjava.net.URL;importjava.sql.*;importjava.util.Properties;/*
 *@Student 张策
 */publicclassJDBCUtils{privatestaticString url;privatestaticString user;privatestaticString password;privatestaticString driver;static{//静态代码块,用于读取下方配置文件的数据try{Properties properties=newProperties();ClassLoader classLoader =JDBCUtils.class.getClassLoader();URL resource = classLoader.getResource("jdbc.properties");String path = resource.getPath();
            properties.load(newFileReader(path));
            url=properties.getProperty("url");
            user=properties.getProperty("user");
            password=properties.getProperty("password");
            driver=properties.getProperty("driver");Class.forName(driver);}catch(IOException e){
            e.printStackTrace();}catch(ClassNotFoundException e){
            e.printStackTrace();}}publicstaticConnectiongetConnection()throwsSQLException{//连接数据库,调用了静态代码块读取的属性returnDriverManager.getConnection(url,user,password);}publicstaticvoidclose(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();}}}//关闭资源方法publicstaticvoidclose(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();}}}}

配置文件jdbc.properties

url=jdbc:mysql:///db6?useSSL=false&characterEncoding=utf8        //db6表示数据库的名字.//useSSL=false这部分是用来指定是否使用SSL(Secure Socket Layer)加密连接到MySQL数据库的。//将useSSL=false包含在连接URL中表示不使用SSL加密连接。//characterEncoding=utf8  保证在数据库和Java代码中,需要保证字符编码方式一致//如果你确信你的MySQL数据库不需要通过SSL加密连接,那么useSSL=false是一个合适的设置。这可以帮助简化连接配置,并且在某些情况下(例如本地开发环境)可能更方便。
user=root
//MySQL数据库名称
password=//MySQL的密码
driver=com.mysql.jdbc.Driver//驱动

随后运行Text1

在这里插入图片描述


本文转载自: https://blog.csdn.net/yuncengzhishang/article/details/136678692
版权归原作者 问窗 所有, 如有侵权,请联系我们删除。

“JDBC:IDEA实现用户登录和MySQL数据库的连接”的评论:

还没有评论