精华内容
下载资源
问答
  • Java+sql数据库+frame图形界面

    热门讨论 2009-10-15 09:42:28
    这是我们上学期的作业,是一个非常简单常用的Java程序,其中有用sql连接数据库的语句,和图形界面,欢迎初学者 观看使用
  • 本文关键字:DB、DBMS、SQL图形界面工具。刚刚接触数据库的小伙伴可能会对几个名词混淆不清,一上来又是命令又是工具的,这篇文章帮大家来明确一下这几个概念之间的关系。

    写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成,愿将昔日所获与大家交流一二,希望对学习路上的你有所助益。同时,博主也想通过此次尝试打造一个完善的技术图书馆,任何与文章技术点有关的异常、错误、注意事项均会在末尾列出,欢迎大家通过各种方式提供素材。

    • 对于文章中出现的任何错误请大家批评指出,一定及时修改。
    • 有任何想要讨论和学习的问题可联系我:zhuyc@vip.163.com。
    • 发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。

    数据库、数据库管理系统、SQL和图形界面工具的关系

    本文关键字:数据库、DBMS、SQL、图形界面工具

    刚刚接触数据库的小伙伴可能会对几个名词混淆不清,一上来又是命令又是工具的,这篇文章帮大家来明确一下这几个概念之间的关系。

    一、数据库(DB)

    数据库是我们接触这一学科时认识的第一个词,也是最容易产生歧义的一个词。为什么这么说呢?因为它既有自己的意义,也是其他名词的简称。

    • 数据

    数据的概念大家并不陌生,这是一个很广义的词。书籍、磁盘、储存卡都能成为数据存储的载体,书籍中的文字、存储设备中的文本文件、音频、视频等等都可以称之为数据。如果,你去查百度百科的话,定义简直不要更抽象:

    数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材。
    数据可以是连续的值,比如声音、图像,称为模拟数据。也可以是离散的,如符号、文字,称为数字数据。
    在计算机系统中,数据以二进制信息单元0,1的形式表示。

    既然我们现在接触的是信息技术和计算机相关的领域,那我们划一下重点,数据的定义可以是:存储在设备中的很重要的文件,通常是某些应用正常使用的基础。那么根据数据使用的时机和特点,我们还可以这样分类:内存中的数据和硬盘中的数据。我们知道,当一个程序开始运行时,首先要在内存中申请空间,然后根据程序的需要再去加载相应的资源。
    比如我们运行一个游戏,可能自身的大小为10GB,但是运行的时候并不需要这么多,因为并不需要把所有的文件都加载到内存中,当我们切换到一个新的场景或者新开始一个游戏时,就需要加载一些素材和数据,这个时候就会从硬盘中加载一些(同时可能会释放一些无用的资源)。
    当我们退出游戏时,比如我们积攒了一万金币,如果没有存档,那肯定会很悲剧,因为内存中的数据是不会永久保存的,当程序退出或者计算机重新启动,其中的内容就会被释放掉(毕竟那么多软件等着用呢)。而如果我们存档,就相当于把数据永久保存到了硬盘上,下次再进入时,是从硬盘上进行读档。
    也就是说硬盘上的数据是持久化保存的,是以各种文件格式存在的,可能是游戏程序所需要的特定数据文件格式,也可能是我们熟知的各种文件格式。

    • 数据库

    理解了数据的概念和相关特点后,我们直接引用百度百科的定义:

    数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。

    简而言之,数据库就是具有某种数据格式的数据的集合。通常我们所说的数据库都将数据存储在硬盘上,对于这样的数据集合必然要通过相应的软件去管理,这样的软件被称作数据库管理系统,即:DBMS。所以,在很多时候我们会用“数据库”这个词直接代表“数据库管理系统”,因为二者其实是密不可分的。

    如果真要说两者的区别,才需要较一下真,数据库指的是存储的数据本身,而数据库管理系统指的是为管理数据库而设计的电脑软件系统。如果想要具体了解一下数据库的发展历程可以进传送门:数据库的发展与数据模型

    二、数据库管理系统(DBMS)

    理解了DB(数据库)和DBMS(数据库管理系统)之间的关系后,我们再去看维基百科上面的叙述应该就很清楚了:

    数据库管理系统(Database Management System,简称DBMS)是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。数据库管理系统可以依据它所支持的数据库模型来作分类,例如关系式、XML;或依据所支持的电脑类型来作分类,例如服务器聚类、移动电话;或依据所用查询语言来作分类,例如SQL、XQuery;或依据性能冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。

    数据库关系系统就是一个能够操作数据库的软件,用户可以通过DBMS去完成对数据的最基本操作,新增、删除、修改、查询,也就是常说的增删改查,或者洋气的称为:CURD,即:C-创建(Create)、U-更新(Update)、R-读取(Retrieve)和D-删除(Delete)。
    目前我们所使用的数据库以第二代数据库为主,所学习的也都是典型的关系型数据库,如:SQL Server、MySQL、Oracle等。说到DBMS之间的区别,主要在于内置函数、数据存取策略、应用场景适用性以及数据库对象之间的差异等等。

    很多小伙伴儿可能会发现,当学完一个DBMS之后,用同样的语句在另外一个DBMS上也能执行成功,于是就很兴奋的认为原来数据库就是如此简单,我已经能够驾驭多个DBMS了!对此,小编只能很冷静的告诉你:对不起,请收回你的自信。。。之所以能够通用是因为这些DBMS在设计之初都支持使用SQL,但是仅仅掌握了SQL不能说你就掌握了这个DBMS。

    三、结构化查询语言(SQL)

    说到SQL,其实不需要过多的解释,因为他就像Java、C、Python一样,也是一种编程语言,只不过它的目的很单一,只作用在数据库上,能够对数据直接进行操作,也支持定义函数、存储过程、触发器等数据库对象,也可以使用case-when来实现选择结构。
    SQL的全称为Structured Query Language,即:结构化查询语言。1974年由Boyce和Chamberlin提出,并首先在IBM公司研制的关系数据库系统SystemR上实现。SQL从功能和作用上可以分为6类:

    • 数据查询语言(DQL):主要由SELECT、FROM、WHERE组成,用于查询数据
    • 数据操纵语言(DML):主要包含插入(INSERT)、更新(UPDATE)、删除(DELETE)三种操作
    • 数据定义语言(DDL):主要使用CREATE来创建各种数据库对象(TABLE、VIEW、INDEX等)
    • 数据控制语言(DCL):主要用于数据库的权限控制及用户对数据库对象的使用管理
    • 事务处理语言(TPL):事务处理主要为了保证一系列的操作能够全部成功或统一回滚,主要关键字包括TRANSACTION、COMMIT、ROLLBACK
    • 指针控制语言(CCL):通过指针可以对数据表以行为单位进行操作,主要关键字包括CURSOR、FETCH、CURRENT

    具体的SQL语法将在后续文章中介绍,有关于SQL和DBMS的关系我想大家应该已经很清楚了,SQL是关系型数据库语言的标准,可以适用于多种关系型数据库。有些小伙伴可能听说过T-SQL,在这里也说明一下,T-SQL( Transact-SQL)是SQL的增强版,但是只能在Microsoft SQL Server数据库上使用。在有些时候也会用T-SQL来代表某一个数据库自己对SQL语言的扩展或高级用法,这里注意区分。

    四、图形界面工具

    说到图形界面工具,其实就是我们最常使用的软件,那为什么还要弄出这么个词呢?这是因为数据在安装以后是以一个系统服务的方式存在,需要有相应的客户端才能够访问和使用。一般安装数据库以后都会带有官方提供的客户端程序,如:Oracle的sqlplus,MySQL的mysql,但是这些客户端都是在cmd中运行的,只能通过相应的指令或SQL语句来操作,为了方便用户操作数据库,就会借助图形界面工具了,也就是说图形界面工具本身只是一个操作DBMS的可视化软件,必须连接到一个正常工作的数据库服务才能使用
    这里给大家介绍一些官方工具,大家可以根据喜好自行选择:

    • Oracle SQL Developer:Oracle数据库官方图形界面工具(免费)

    下载地址:https://www.oracle.com/cn/tools/downloads/oracle-sql-developer-download.html

    • MySQL Workbench:MySQL数据库官方图形界面工具(免费)

    下载地址:https://dev.mysql.com/downloads/workbench/

    • SQL Server Management Studio(SSMS):SQLServer数据库官方图形界面工具(免费)

    下载地址:https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15

    • PL/SQL Developer:支持Oracle数据库(需自行解决收费问题)
    • SQLyog:支持MySQL数据库(旗舰版收费)
    • MySQL-Front:支持MySQL数据库,生成数据字典较方便(需自行解决收费问题)
    • Navicat Premium:支持多种数据库,新版集成了可视化组件(需自行解决收费问题)
    • DataGrip:支持多种数据库,JetBrains家族优秀的数据库界面工具(需自行解决收费问题)

    扫描下方二维码,加入官方粉丝微信群,可以与我直接交流,还有更多福利哦~

    在这里插入图片描述

    展开全文
  • 开始了, 第一步, 检查数据库判断账号是否存在并且密码...import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /* 检查账号密码是否对, 实

    先看这个👇👇👇

    https://blog.csdn.net/m0_49902448/article/details/114442083

    搞过注册之后, 登录就差不多了哈哈, 在注册的基础上写登录(注册可以点开…)

    • 开始了, 第一步, 检查数据库判断账号是否存在并且密码是否匹配, 如果匹配, 则登录, 如果不匹配, 则提示账号或者密码输入错误或者不存在, 代码如下
    package JDBC;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    /*
    检查账号密码是否对, 实现登录
     */
    public class EqualIdPas {
        public static int idPassword(String id, String password){
            Connection conn = null;
            PreparedStatement st = null;
            ResultSet rs = null;
            try {
                conn = JdbcUtils_DBCP.getConnection();
    
                String sql = "select * from users where id=? and password =?";
    
                st = conn.prepareStatement(sql);//预编译sql, 先写sql, 然后不执行
                //手动给参数赋值
                st.setString(1,id);//传入id
                st.setString(2,password);//传入password
    
                rs = st.executeQuery();
    
                while (rs.next()){
                    return 1;//如果数据库有这个数据, 则返回数字1
                }
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }finally{
                JdbcUtils_DBCP.release(conn, st,null);
            }
            return 2;//如果数据库没有这个数据, 则返回数字2
        }
    }
    
    • 图形化界面梳理, 需要登录界面, 登录失败界面, 登陆后界面, 准备完毕后再开始写监听器

    在这里插入图片描述

    如图, demo03是登录界面, demo05是登录成功界面, demo17是登录失败界面

    • 监听器, 需要传入一个框体对象, 账号输入框对象, 密码输入框对象, 获取密码框文本信息用的是getPassword, 跟注册那个差不多, 看代码吧
    package listener;
    
    import JDBC.EqualIdPas;
    import hello_world.demo05bigface;
    import hello_world.demo17failLogin;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    /*
    登录
     */
    public class loginListener implements ActionListener {
    
        private javax.swing.JTextField jt;//账号输入框对象
        private javax.swing.JPasswordField jp;//密码输入框对象
        private javax.swing.JFrame login;//定义一个窗体对象
    
        public loginListener(javax.swing.JFrame login,javax.swing.JTextField jt,javax.swing.JPasswordField jp) {
            this.login=login;//获取登录界面
            this.jt=jt;//获取登录界面中的账号输入框对象
            this.jp=jp;//获取登录界面中的密码输入框对象
        }
    
        @Override
        public void actionPerformed(ActionEvent e) {
    
            //利用get方法来获取账号和密码对象的文本信息,并用equal方法进行判断。最好不要用==,用==这个地方验证不过去。
            String id = jt.getText();
            String password = String.valueOf(jp.getPassword());
    
            int idPas = EqualIdPas.idPassword(id, password);
    
            if(idPas==1){
                //为1代表账号密码输入正确, 允许登录, 打开登录成功界面
                demo05bigface demo05bigface = new demo05bigface();
                demo05bigface.showUI();//打开登陆后
                login.dispose();//关闭登录
            }else if(idPas==2){
                //2账号密码错误, 弹出提示框
                demo17failLogin demo17failLogin = new demo17failLogin();
                demo17failLogin.showUI();//打开提示
                login.dispose();//关闭登录
            }
        }
    }
    
    • 给登录页面的登录按钮装监听器
    //首先实例化登录按钮监听类的对象,并把登录界面中账号和密码输入框的对象传给它
    loginListener ll1 = new loginListener(jf, tex, pas);
    //对当前窗体添加监听方法
    but1.addActionListener(ll1);//监控按钮
    
    • 看效果
      数据库
      在这里插入图片描述
      登录666666,123456
      在这里插入图片描述
      登录成功!
      在这里插入图片描述
      再来试一个错的账号密码
      在这里插入图片描述
      结果是这样
      在这里插入图片描述
      点击[返回登录]
      在这里插入图片描述
      结束了结束了

    程序猿永不向BUG低头, 加油

    展开全文
  • 创建lib目录, 导jar包, 添加为库,注意这个lib包, 一定要放在项目包下面, 我的放在QQQ下面, 暂时需要的jar包如下, ...连接数据库DriverManager 获得执行sql对象Statement 获得返回的结果集 释放连接 连接池用DBCP, .

    【一】在cmd打开mysqlnet start mysql

    【二】创建lib目录, 导jar包, 添加为库,注意这个lib包, 一定要放在项目包下面(其实就是src), 放错位置不管用, 我的放在QQQ下面, 暂时需要的jar包如下, 点击下载各种commons

    在这里插入图片描述

    【三】 创建一个数据库,我这里数据名字叫qqxm

    在这里插入图片描述

    我这里数据库的名称设置为qqxm(忽略图,图片是user, 截错图了), 基字符集设置为utf8, 数据库排列规则设置为utf8_general_ci

    在这里插入图片描述

    【四】创建一个users表

    在这里插入图片描述

    • JDBC步骤再总结
      • 加载驱动
      • 连接数据库DriverManager
      • 获得执行sql对象Statement
      • 获得返回的结果集
      • 释放连接
    • 连接池用DBCP, 使用了这些数据库连接池之后, 我们在项目开发中, 就不需要编写连接数据库的代码了, 需要用到的jar包commons-dbcp2-2.8.0.jar, commons-pool2-2.9.0.jar, commons-logging-1.2.jar

    【五】- 文件db.properties, 放在项目下面, 放错位置不管用, 放在QQQ的下面!!(也就是src)

    driver=com.mysql.cj.jdbc.Driver
    url=jdbc:mysql://localhost:3306/qqxm?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC
    username=root
    password=qwertyuiop
    

    注意改一下数据库的用户名和密码, 不同版本的driver和url写法有一点差别, 老版本的driver好像不用写.cj,url的serverTimezone=UTC是倒时差, 前面那一串应该是防止乱码啥的, 这都是固定的

    url=jdbc:mysql://localhost:3306/qqxm?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC

    这个qqxm是数据库名称, 记得修改数据库名称

    【六】DBCP连接设置 dbcpconfig.properties, 放在项目下面!, 记得改下数据库的用户名和密码, 其他不用改

    在项目创建一个文件, 命名为dbcpconfig.properties, 内容如下

    # 连接设置 这里面的名字, 是DBCP数据源中定义好的
    driverClassName=com.mysql.cj.jdbc.Driver
    url=jdbc:mysql://localhost:3306/qqxm?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC
    username=root
    password=qwertyuiop
    
    #<!-- 初始化连接 -->
    initialSize=10
    
    #最大连接数量
    maxActive=50
    
    #<!-- 最大空闲连接 -->
    maxIdle=20
    
    #<!-- 最小空闲连接 -->
    minIdle=5
    
    #<!-- 超时等待时间以毫秒为单位 6000毫秒/1000等于60-->
    maxWait=60000
    #JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:【属性名=property;】
    #注意:"user""password" 两个属性会被明确地传递,因此这里不需要包含他们。
    connectionProperties=useUnicode=true;characterEncoding=UTF8
    
    #指定由连接池所创建的连接的自动提交(auto-commit)状态。
    defaultAutoCommit=true
    
    #driver default 指定由连接池所创建的连接的只读(read-only)状态。
    #如果没有设置该值,则“setReadOnly”方法将不被调用。(某些驱动并不支持只读模式,如:Informix)
    defaultReadOnly=
    
    #driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。
    #可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE
    defaultTransactionIsolation=READ_UNCOMMITTED
    

    大概长这样, 这俩properties是在QQQ下面的, 记得放对位置

    在这里插入图片描述

    【七】 写两个utilis配置, 是一个类, 如下

    import java.io.InputStream;
    import java.sql.*;
    import java.util.Properties;
    
    public class JdbcUtils {
            private static String driver = null;
            private static String url = null;
            private static String username = null;
            private static String password = null;
    
            static {
    
                try{
                    InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties");
                    Properties properties = new Properties();
                    properties.load(in);
    
                    driver = properties.getProperty("driver");
                    url = properties.getProperty("url");
                    username = properties.getProperty("username");
                    password = properties.getProperty("password");
    
                    //1.驱动只用加载一次
                    Class.forName(driver);
    
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
    
            //获取连接
            public static Connection getConnection() throws SQLException {
                return DriverManager.getConnection(url, username, password);
            }
            //释放连接资源
            public static void release(Connection conn, Statement st, ResultSet rs){
                if(conn!=null){
                    try {
                        conn.close();
                    } catch (SQLException throwables) {
                        throwables.printStackTrace();
                    }
                }
                if(st!=null){
                    try {
                        st.close();
                    } catch (SQLException throwables) {
                        throwables.printStackTrace();
                    }
                }
                if(rs!=null){
                    try {
                        rs.close();
                    } catch (SQLException throwables) {
                        throwables.printStackTrace();
                    }
                }
            }
        }
    
    import javax.sql.DataSource;
    import java.io.InputStream;
    import java.sql.*;
    import java.util.Properties;
    
    public class JdbcUtils_DBCP {
    
        private static DataSource dataSource = null;
    
        static {
    
            try{
                InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("dbcpconfig.properties");
                Properties properties = new Properties();
                properties.load(in);
    
                //创建数据源 工厂模式-->创建对象
                dataSource = BasicDataSourceFactory.createDataSource(properties);
    
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        //获取连接
        public static Connection getConnection() throws SQLException {
            return dataSource.getConnection(); //从数据源中获取连接
        }
        //释放连接资源
        public static void release(Connection conn, Statement st, ResultSet rs){
            if(conn!=null){
                try {
                    conn.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if(st!=null){
                try {
                    st.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if(rs!=null){
                try {
                    rs.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
        }
    }
    

    大概长这样

    在这里插入图片描述

    【八】 实现注册, 这个先不跟注册界面连接,先当测试跑一下

    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    
    public class TestDBCP {
        public static void main(String[] args) {
            Connection conn = null;
            PreparedStatement st = null;
    
            try {
                conn = JdbcUtils_DBCP.getConnection();
    
                String sql = "INSERT INTO users(`id`,`password`) values(?,?)";
                st = conn.prepareStatement(sql);//预编译sql, 先写sql, 然后不执行
                //手动给参数赋值
                st.setString(1,"666666");//这里一会需要与注册界面连接来
                st.setString(2,"123456");//这里一会需要与注册界面连接来
                //执行
                int i=st.executeUpdate();
                if(i>0){
                    System.out.println("插入成功");
                }
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }finally{
                JdbcUtils_DBCP.release(conn, st,null);
            }
        }
    }
    

    先测试一下注册是否管用, 如下图就差不多了哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈

    在这里插入图片描述

    如果不是, 那就检查检查, 稳住, 慢慢检查

    到这里数据库就连上了,接下来是与图形界面结合,下面的方法是写一个监听器类,然鹅很繁琐,如果写一个匿名监听器就很清爽了,比如这个https://blog.csdn.net/m0_49902448/article/details/117994044?spm=1001.2014.3001.5501

    • 接下来就要把上面这个注册代码与swing图形界面连接起来(哈哈哈鼠标没电了)

    demo04是注册界面, demo13是注册成功界面, demo16是注册失败界面(账号被占用), 注册成功将把账号密码数据存入数据库并弹出注册成功界面, 失败则不存数据并弹出注册失败界面, 参考1, 参考2 ←可以看看这两个

    在这里插入图片描述

    1.对登录按钮设置一个事件监听机制,监听按钮是否被点击。

    2.等登录按钮被点击后,我们要获取账号和密码文本输入框中的信息,然后用if语句进行判断

    3.如果正确,则利用JFrame类再去新建一个窗口,并且利用属性来关闭原来的窗口。不正确则不进行操作。

    这里需要了解一下监听机制

    给账号输入框和密码输入框添加监听器, 给注册按钮添加监听器(下方代码来自参考文章)

    //添加账号输入框,并添加监控事件
    		JTextField textname=new JTextField();
    		jf.add(textname);
    //添加密码输入框,并添加监控事件
    		JPasswordField jp=new JPasswordField();
    		jf.add(jp);
    //首先实例化登录按钮监听类的对象,并把登录界面中账号和密码输入框的对象传给它
    		LoginListener ll=new LoginListener(jf,textname,jp);
    		//对当前窗体添加监听方法
    		button.addActionListener(ll);//监控按钮
    
    ————————————————
    版权声明:本文为CSDN博主「Alexwym」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/Alexwym/article/details/80711341
    
    • 开始了, 第一步, 检查数据库判断账号是否存在, 如果不存在, 则注册新账号, 如果存在, 则不能注册此账号, 下面是代码
    package JDBC;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    /*
    检查账号是否存在
     */
    public class EqualId {
        public static int equalid(String id){//传入字符串id账号
            Connection conn = null;
            PreparedStatement st = null;
            ResultSet rs = null;
            try {
                conn = JdbcUtils_DBCP.getConnection();
    
                String sql = "select * from users where id=?";//查询账户
    
                st = conn.prepareStatement(sql);//预编译sql, 先写sql, 然后不执行
                //手动给参数赋值
                st.setString(1,id);//传入id
    
                rs = st.executeQuery();
    
                while (rs.next()){
                    return 1;//如果数据库有这个数据, 则返回数字1
                }
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }finally{
                JdbcUtils_DBCP.release(conn, st,null);//用完释放
            }
            return 2;//如果数据库没有这个数据, 则返回数字2
        }
    }
    
    • (如果账号不存在) 将账号密码存入数据库
    package JDBC;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    /*
    注册连接数据库, 往表user存id和password
     */
    public class sql01register {
        public int register(String id, String password){
            Connection conn = null;
            PreparedStatement st = null;
    
            try {
                conn = JdbcUtils_DBCP.getConnection();
    
                String sql = "INSERT INTO users (`id`,`password`) values(?,?)";//给users表插入数据
                st = conn.prepareStatement(sql);//预编译sql, 先写sql, 然后不执行
                //手动给参数赋值
                st.setString(1,id);//这里一会需要与注册界面连接来
                st.setString(2,password);//这里一会需要与注册界面连接来
                //执行
                int i=st.executeUpdate();
                if(i>0){
                    return 1;//如果插入成功, 则返回数字1
                }
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }finally{
                JdbcUtils_DBCP.release(conn, st,null);
            }
            return 2;//如果插入失败, 则返回数字2
        }
    }
    
    • 监听器, 需要传入一个框体对象, 账号输入框对象, 密码输入框对象, 我的注册密码输入框是普通文本框, 不是密码框, 如果是密码框, 获取密码框文本信息用的是getPassword
    package listener;
    
    import JDBC.EqualId;
    import JDBC.EqualIdPas;
    import JDBC.sql01register;
    import hello_world.demo13face1;
    import hello_world.demo16failRegister;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    /*
    注册的监控
     */
    public class registerListener implements ActionListener{
    
        private javax.swing.JTextField jt;//账号输入框对象
        private javax.swing.JTextField jp;//密码输入框对象
        private javax.swing.JFrame register;//定义一个窗体对象
    
        public registerListener(javax.swing.JFrame register,javax.swing.JTextField jt,javax.swing.JTextField jp) {
            this.register=register;//获取登录界面
            this.jt=jt;//获取登录界面中的账号输入框对象
            this.jp=jp;//获取登录界面中的密码输入框对象
        }
    
        @Override
        public void actionPerformed(ActionEvent e) {
    
            //利用get方法来获取账号和密码对象的文本信息,并用equal方法进行判断。最好不要用==,用==这个地方验证不过去。
            String id = jt.getText();
            String password = jp.getText();
    
            int idPas = EqualId.equalid(id);
            if(idPas==1){
                //数据库存在此账号, 无法注册, 注册失败
                demo16failRegister demo16failRegister = new demo16failRegister();
                demo16failRegister.showUI();//弹出窗口, 提示账号已存在
                //不知道为啥, 把提示账号存在窗口关了之后啥也没了, 先这吧
          
            }else if(idPas==2){
                //数据库没有此账号,可以注册
                sql01register sql01register = new sql01register();
                sql01register.register(id, password);//将账号密码存入数据库
                demo13face1 demo13face1 = new demo13face1();
                demo13face1.showUI(jt, jp);//打开注册成功窗口
                register.dispose();//关闭注册窗口
            }
        }
    }
    
    • 把监听器放在swing注册界面, 界面代码没啥用不放了, 只放装监听器代码
    //注册
    //首先实例化登录按钮监听类的对象,并把登录界面中账号和密码输入框的对象传给它
    registerListener ll1 = new registerListener(jf,tex,pas);//传入窗口账号密码
    //对当前窗体添加监听方法
    but1.addActionListener(ll1);//监控按钮
    
    • 完成, 下面是效果图嘻嘻
      输入注册信息
      在这里插入图片描述
      注册成功!
      在这里插入图片描述
      来数据库看一看~
      在这里插入图片描述
      如果还注册999999账号
      在这里插入图片描述
      发现不可以哈哈
      在这里插入图片描述
      完成了, 真是辛苦自己了哈哈(手动狗头)
      在这里插入图片描述
      最后, 排版不是太规整, 写的不是太详细, 凑合看哈哈
    展开全文
  • 题目学生成绩管理系统 学院数学与信息工程学院 专业计算机科学与技术 班级 同组成员 编写日期 课程设计目的 做这个小的学生成绩管理系统来加深对JAVA所学知识的巩固以及学习JAVA数据库连接JAVA的GUI图形界面 ...
  • 简单的图形界面实现数据库的增删查改,使用java图形界面对数据库进行增删查改的相关操作,代码简单能够进行简单的修改
  • 2.sql server驱动加载,服务器ip端口设置 3.创建数据库,查询语句 界面展示 test3/login.java package test3; import java.awt.Dimension; //封装了一个构件的高度和宽度 import java.awt.FlowLayout; import java...

    做成这些需要学:
    1.swing
    2.sql server驱动加载,服务器ip端口设置
    3.创建数据库,查询语句
    界面展示
    在这里插入图片描述
    在这里插入图片描述

    test3/login.java

    package test3;
    import java.awt.Dimension;  //封装了一个构件的高度和宽度
    import java.awt.FlowLayout;
    import java.awt.Font;
     
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    import javax.swing.JPasswordField;
    import javax.swing.JButton;
    
    public class login {
     
    	//在类中定义主函数
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		//在主函数中,实例化Login类的对象,调用初始化界面的方法
    		login login = new login();
    		login.initUI();
    		
    		
    	}
    	
    	//在类中定义初始化界面的方法
    	public void initUI() {
    		//在initUI中实例化JFrame类的对象
    		JFrame frame = new JFrame();
    		//设置窗体对象的属性值
    		frame.setTitle("Login");//设置窗体标题
    		frame.setSize(400, 250);//设置窗体大小,只对顶层容器生效
    		frame.setDefaultCloseOperation(3);//设置窗体关闭操作,3表示关闭窗体退出程序
    		frame.setLocationRelativeTo(null);//设置窗体相对于另一组间的居中位置,参数null表示窗体相对于屏幕的中央位置
    		frame.setResizable(false);//禁止调整窗体大小
    		frame.setFont(new Font("宋体",Font.PLAIN,14));//设置字体,显示格式正常,大小
    		
    		//实例化FlowLayout流式布局类的对象,指定对齐方式为居中对齐组件之间的间隔为10个像素
    		FlowLayout fl = new FlowLayout(FlowLayout.CENTER,10,10);
    		//实例化流式布局类的对象
    		frame.setLayout(fl);
    		
    		//实例化JLabel标签对象,该对象显示“账号”
    		JLabel labname = new JLabel("账号:");
    		labname.setFont(new Font("宋体",Font.PLAIN,14));
    		//将labname标签添加到窗体上
    		frame.add(labname);
    		
    		//实例化JTextField标签对象化
    		JTextField text_name = new JTextField();
    		Dimension dim1 = new Dimension(300,30);
    		text_name.setPreferredSize(dim1);//设置除顶级容器组件以外其他组件的大小
    		//将textName标签添加到窗体上
    		frame.add(text_name);
    		
    		//实例化JLabel标签对象,该对象显示“密码”
    		JLabel labpass = new JLabel("密码:");
    		labpass.setFont(new Font("宋体",Font.PLAIN,14));
    		//将labpass添加到窗体上
    		frame.add(labpass);
    		
    		//实例化JPasswordField
    		JPasswordField text_password = new JPasswordField();
    		//设置大小
    		text_password.setPreferredSize(dim1);
    		//添加到窗体
    		frame.add(text_password);
    		
    		//实例化JButton组件
    		JButton button1 = new JButton();
    		//设置按键的显示内容
    		Dimension dim2 = new Dimension(100,30);
    		button1.setText("登录");
    		button1.setFont(new Font("宋体",Font.PLAIN,14));
    		//设置按键大小
    		button1.setSize(dim2);
    		frame.add(button1);
    		
    		frame.setVisible(true);//窗体可见,一定要放在所有组件加入窗体后
    		
    		LoginListener ll = new LoginListener(frame,text_name,text_password);
    		button1.addActionListener(ll);
    	}
    }
    

    test3/LoginListener.java

    package test3;
     
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.awt.Font;
     
    import javax.swing.JButton;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    
    public class LoginListener implements ActionListener{
    	private javax.swing.JTextField text_name;
    	private javax.swing.JPasswordField text_password;
    	private javax.swing.JFrame login;
    	
    	public LoginListener(javax.swing.JFrame login,javax.swing.JTextField text_name,javax.swing.JPasswordField text_password)
    	{//获取登录界面、账号密码输入框对象
    		this.login=login;
    		this.text_name=text_name;
    		this.text_password=text_password;
    	}
    	
    	int i=3;//3次登录机会
    	
    	public void actionPerformed(ActionEvent e)
    	{
    		Dimension dim2 = new Dimension(100,30);
    		Dimension dim3 = new Dimension(300,30);
    		
    		//生成新界面
    		javax.swing.JFrame login2 = new javax.swing.JFrame();
    		login2.setSize(400,200);
    		login2.setDefaultCloseOperation(3);
    		login2.setLocationRelativeTo(null);
    		login2.setFont(new Font("宋体",Font.PLAIN,14));  //宋体,正常风格,14号字体
    		//创建组件
    		javax.swing.JPanel jp1 = new JPanel();
    		javax.swing.JPanel jp2 = new JPanel();
    		connect conn = new connect();
    		conn.getConnection();
    		
    		String usernumber=text_name.getText();
    		String userpassword=text_password.getText();
    		Boolean flag=conn.checkAccount(usernumber, userpassword);
    			if(flag)/*text_name.getText().equals("vv") && text_password.getText().equals("123456")*/
    			{	
    				JLabel message = new JLabel("登陆成功!");
    				message.setFont(new Font("宋体",Font.PLAIN,14));  //宋体,正常风格,14号字体
    				message.setPreferredSize(dim3);
    				jp1.add(message);
    				login2.add(jp1,BorderLayout.CENTER);
    				JButton close = new JButton("确定");
    				close.setFont(new Font("宋体",Font.PLAIN,14));
    				//设置按键大小
    				close.setSize(dim3);
    				jp2.add(close);
    				login2.add(jp2,BorderLayout.SOUTH);
    				close.addActionListener(new ActionListener()
    				{
    					public void actionPerformed(ActionEvent e)
    					{
    						login2.dispose();
    						menu menu =new menu();
    						menu.go();
    					}
    				});
    				
    				login2.setResizable(false);
    				login2.setVisible(true);
    				
    				//通过我们获取的登录界面对象,用dispose方法关闭它
    				login.dispose();
    				menu m =new menu();
    			}
    			else 
    			{
    				JLabel message = new JLabel("密码错误请重试");
    				message.setFont(new Font("宋体",Font.PLAIN,14));  //宋体,正常风格,14号字体
    				message.setPreferredSize(dim3);
    				//将textName标签添加到窗体上
    				jp1.add(message);
    				login2.add(jp1,BorderLayout.CENTER);
    				
    				JButton close = new JButton("确定");
    				close.setFont(new Font("宋体",Font.PLAIN,14));
    				//设置按键大小
    				close.setSize(dim3);
    				jp2.add(close);
    				login2.add(jp2,BorderLayout.SOUTH);
    				
    				close.addActionListener(new ActionListener()
    				{
    					public void actionPerformed(ActionEvent e)
    					{
    						login2.dispose();
    					}
    				});
    				
    				login2.setResizable(false);
    				login2.setVisible(true);
    				
    				//通过我们获取的登录界面对象,用dispose方法关闭它
    				login.dispose();
    			}
    	}
    }
    

    test3/connnect.java

    package test3;
    import java.sql.*;
    public class connect 
    {
    	static Connection con;
    	public Connection getConnection()
    	{
    		try{
    			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //数据库驱动加载
    			System.out.println("数据库驱动加载成功");
    		}catch(ClassNotFoundException e){
    			e.printStackTrace();
    		}
    		try{
    			con=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=*********","sa","********");//数据库连接//数据库连接,sa是登录名,后面的是数字是密码,db_jdbc是数据库名字
    		System.out.println("数据库连接成功");
    		}catch(SQLException e){
    			e.printStackTrace();
    		}
    		return con;
    	}
    	public boolean checkAccount(String usernumber, String userpassword) {
            try 
            {
                Statement stmt = con.createStatement();
                String sqlstmt = "select userpassword from [dbo].[userinfo] where usernumber=" + "'" + usernumber + "'";
                ResultSet resultSet = stmt.executeQuery(sqlstmt);
                String passWord = "";
                while (resultSet.next()) {
                    passWord = resultSet.getString("userpassword").trim();
                    if (passWord == userpassword || passWord.equals(userpassword)) {
                        return true;
                    } else return false;
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
     
            return false;
        }
    }
    
    
    展开全文
  • Java学习之连接sqlserver数据库

    千次阅读 多人点赞 2019-01-02 20:42:00
    数据库有很多,嵌入式里面用my-sql多一点,是开源软件。最近看一本书用的sqlserver,就暂且拿sqlserver学习一下,其他的都大致一样。  1、运行sqlserver  用于学习,构建小型的数据库,在网上找了一个绿色版的...
  • 由于比较简单: 所以直接上代码了。 public static void main(String... String dbURL="jdbc:sqlserver: 127.0.0.1:1433;DatabaseName=stmt"; test为你的数据库名 String userName="sa"; 你的数据库用户名 String us
  • MySQLGUI → 图形用户界面 OperationMySql → 对数据库数据的操作功能实现 实现概貌: 这个项目的注释真的 真的灰常详细 ~ o( ̄▽ ̄)ブ 此项目代码量在 1000 行左右,纯手打,奥力给 直接上代码啦 启动单独成...
  • 2、使用了事件监听、Java操作SQLserver数据库等知识。 3、图形界面中使用了JTable等组件,将查询结果显示在表格中。 详见我的博客:http://blog.csdn.net/qq_25827845/article/details/50932501
  • 1.确定数据库连接类型 这里我使用的是SqlServer数据库
  • 学生信息管理系统,使用Java开发。... 2、使用了事件监听、Java操作SQLserver数据库等知识。 3、图形界面中使用了JTable等组件,将查询结果显示在表格中http://blog.csdn.net/qq_25827845/article/details/50932501
  • java GUI连接数据库实现增删改查

    千次阅读 多人点赞 2019-07-25 21:50:09
    java GUI连接数据库实现增删改查 页面效果 1.封装连接数据库的代码 package com.itheima.sql; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql....
  • @数据库课程设计—简易网上银行管理系统-java图形用户界面 所使用数据库版本—mysql5.7 所使用java编译器—idea2019 效果实现图: 登录界面 功能界面: 注册界面: 管理员界面数据库表设计: 函数图: ...
  • 目录一、数据库、表的创建与删除1. 创建数据库2. 修改数据库3. 删除数据库4. 创建数据表5. 删除数据表二、数据表常见操作1. 在表结构中添加新字段2. 在表结构中删除字段3. 数据表更名三、数据的增删改查1. 数据准备1...
  • 数据库图形界面工具SQLyog

    千次阅读 2020-06-04 11:32:59
    SQLyog图形界面工具 SQLyog 是一个快速而简洁的图形化管理MYSQL数据库的工具,它能够在任何地点有效地管理你的数据库,由业界著名的Webyog公司出品。 SQLyog下载 下载SQLyog可以到官网https://www.webyog.com进行...
  • Java Swing 图形界面开发 一、图形界面步骤 1、创建窗口 // 1. 创建一个顶层容器(窗口) // 创建窗口 JFrame jf = new JFrame ( "测试窗口" ) ; // 设置窗口大小 jf . setSize ( 250 , ...
  • Java学习--网络,图形界面数据库

    千次阅读 2017-10-29 11:14:02
    深入理解java2:软件开发常用实用技术1文件及目录:java.io1.1基本操作File f; f=new File("a.txt");//当前目录下的文件 f=new File("e:\\ex\\","a.txt");//目录+文件 //目录也当做文件处理 File path=new File("e:\...
  • Java 3DMenu 界面源码 5个目标文件 内容索引:Java源码,窗体界面,3DMenu Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都...
  • 简单的商品信息管理系统,(Javasql server数据库间接) 根据老师要求上交的数据库作业,做个简单的增删改查功能 因为数据库老师只教了简单的数据库语句,并没有教其他的界面设计 ,于是我上网查阅信息,第一次进入csdn,...
  • 这篇文章记录了用Swing开发简单的图形用户界面程序与MySQL数据库进行连接,并进行数据获取、数据处理(分页显示)和数据查找的过程 示例程序: 这篇文章是在上篇文章的基础上进行改进和扩充的,因此会时不时地用到...
  • 图形界面实现,只在编译器输出区进行操作,本资源可以帮你学习到java基本操作,javaSQL Server数据库的操作(增删改查),非常基础。
  • java可视化界面操作sql server2010的实例,源码,已调通
  • 1、在数据库jdbc中建立表teach,如下; 2、初始界面 3.1、按姓名查找(number为主键) 3.2、按学号进行删除(建议先查询再删除,也可直接输入学号删除) 3.3、增加记录(学号不可重复(主键)) ...
  • 数据库课程设计,用javasqlsever2008实现完美界面,完美代码,简单易懂,文档也写好了。初学者看起来十分简单易懂。不管对你的数据库设计,还是java设计都有很大帮助。!!(数据库代码和java代码全部在打印版的...
  • Java连接数据库实现用户登录密码验证

    万次阅读 多人点赞 2019-05-07 21:23:59
    1.在store_db数据库中创建一个t_user表; 在domain包中创建一个User的类: package com.xxf.domain; public class User { private Integer id; private String username; private String password; private ...
  • java界面数据库连接简易Atm项目

    万次阅读 多人点赞 2016-04-29 22:40:11
    简易java版atm项目代码,采用swing界面设计,mysql数据库连接。实现基本的用户注册登陆,主要功能有用户存,取,转账等。
  • 用Navigate连接数据库 MySQL数据库管理系统实现对MySQL数据库的操作与管理(体现在 Query中) ...Navicat Premium只是一个操作MySQL软件的图形界面,首先在navigate中建立连接(Connection,创建一个新的数据库,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 34,927
精华内容 13,970
关键字:

java连接sql数据库图形界面

java 订阅