java桥连接sql server--关于登录验证及对数据库增删改查应用

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:

一:步骤

1.sql server建立数据库和相关表
2.建立数据源
 (1).打开控制面板找到管理,打开ODBC选项或直接搜索数据源
 (2).打开数据源配置后点击添加,选择sql server点击完成
 (3).给数据源命名,服务器选择本机电脑sql server 服务器名下一步
969184-20170701210809743-198845513.png
969184-20170701210825399-896268887.png
后面全部点下一步或确定就可以了。
3.代码设计
  1.加载数据库驱动
   2.与数据源建立连接
  3.与数据库建立会话
  4.操作数据库

经常使用的一些JDBC URL

JDBC-ODBC:jdbc:odbc:

Oracle:jdbc:oracle:thin:@

DB2:jdbc:db2:MyTest or jdbc.db2://localhost:6789/MyTest(需要用户名和密码)

sql server数据库连接

package mybook;import java.sql.*;import javax.swing.JOptionPane;public class bookdb {
    String drivername="sun.jdbc.odbc.JdbcOdbcDriver";//驱动名
    Connection conn;
    Statement stmt;
    ResultSet rs;
    bookdb(){        try {
            Class.forName(drivername);
            conn=DriverManager.getConnection("jdbc:odbc:bookdb","sa","zhangyabiao");//与数据源bookdb建立连接
            stmt=conn.createStatement();
        } catch (ClassNotFoundException e) {            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }    
    public ResultSet find(String sql){//对数据库进行数据查询
        try {
            rs=stmt.executeQuery(sql);            return rs;
        } catch (SQLException e) {            // TODO Auto-generated catch block
            e.printStackTrace();            return null;
        }
        
    }    public boolean update(String sql){//对增删改
        try {
            stmt.executeUpdate(sql);            //JOptionPane.showInternalMessageDialog(null, "执行成功");
            return true;
        } catch (SQLException e) {            // TODO Auto-generated catch block
            e.printStackTrace();            //JOptionPane.showInternalMessageDialog(null, "执行失败");
            return false;
        }
    }
}

数据库登录验证及账户注册

package mybook;import java.awt.*;import java.awt.event.*;import java.sql.*;import javax.swing.*;
public class denglu extends JFrame implements ActionListener{    JPanel p1,p2,p3;    JLabel l1,l2;    JTextField f1;    JPasswordField f2;    JButton b1,b2;    ResultSet rs;
    bookframe bf;
    bookdb b;
    zuce z;
    denglu(){
        b=new bookdb();        this.setLayout(new GridLayout(3,1));
        p1=new JPanel();
        p2=new JPanel();
        p3=new JPanel();
        l1=new JLabel("账户:");
        l2=new JLabel("密码:");
        f1=new JTextField(15);
        f2=new JPasswordField(15);
        b1=new JButton("登录");
        b2=new JButton("注册");
        p1.add(l1);
        p1.add(f1);
        p2.add(l2);
        p2.add(f2);
        p3.add(b1);
        p3.add(b2);        this.add(p1);        this.add(p2);        this.add(p3);
        b1.addActionListener(this);
        b2.addActionListener(this);        this.setBounds(300, 350, 300, 250);        this.setVisible(true);
    }
    public void actionPerformed(ActionEvent e) {        // TODO Auto-generated method stub
        if(e.getSource()==b1){//账户验证
            String sql="select *from yonghu where password='"+f2.getText()+"'";
            rs=b.find(sql);            try {                if(rs.next()){
                    bf=new bookframe();                    this.dispose();//释放窗体
                }else{                    JOptionPane.showMessageDialog(null, "账户或密码错误,请重新登录");
                    f1.setText("");
                    f2.setText("");
                }
            } catch (SQLException e1) {                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }else if(e.getSource()==b2){
            z=new zuce();//注册账户
        }
    }
}

账户注册

package mybook;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.sql.*;
public class zuce extends JFrame implements ActionListener{    JPanel p1,p2,p3;    JLabel l1,l2;    JTextField f1;    JPasswordField f2;    JButton b1,b2;    ResultSet rs;
    bookdb b;
    zuce(){
        b=new bookdb();        this.setLayout(new GridLayout(3,1));
        p1=new JPanel();
        p2=new JPanel();
        p3=new JPanel();
        l1=new JLabel("账户:");
        l2=new JLabel("密码:");
        f1=new JTextField(15);
        f2=new JPasswordField(15);
        b1=new JButton("保存");
        b2=new JButton("取消");
        p1.add(l1);
        p1.add(f1);
        p2.add(l2);
        p2.add(f2);
        p3.add(b1);
        p3.add(b2);        this.add(p1);        this.add(p2);        this.add(p3);
        b1.addActionListener(this);
        b2.addActionListener(this);        this.setBounds(400, 400, 300,250 );        this.setVisible(true);

    }
    public void actionPerformed(ActionEvent e) {        // TODO Auto-generated method stub
        if(e.getSource()==b1){            String sql="insert into yonghu values('"+f1.getText()+"','"+f2.getText()+"')";            if(b.update(sql)){                JOptionPane.showMessageDialog(null, "注册成功");                this.dispose();
            }else{                JOptionPane.showMessageDialog(null, "用户已存在");
                f1.setText("");
                f2.setText("");
            }
        }else{            this.dispose();
        }
    }
}

对数据库进行对图书的增删改查

package mybook;import java.sql.*;import java.awt.*;import javax.swing.*;import java.awt.event.*;
public class bookframe extends JFrame implements ActionListener {    JLabel l1,l2,l3;    JTextField f1,f2,f3;    JButton b1,b2,b3,b4;    JPanel p1,p2,p3,p4,p5;    ResultSet rs;
    bookdb b;
    bookframe(){
        b=new bookdb();        this.setLayout(new GridLayout(5,1));
        l1=new JLabel("书本编号:");
        l2=new JLabel("书       名:");
        l3=new JLabel("书本作者:");
        f1=new JTextField(15);
        f2=new JTextField(15);
        f3=new JTextField(15);
        b1=new JButton("增加");
        b2=new JButton("查询");
        b3=new JButton("修改");
        b4=new JButton("删除");
        p1=new JPanel();
        p2=new JPanel();
        p3=new JPanel();
        p4=new JPanel();
        p5=new JPanel();
        p1.add(l1);
        p1.add(f1);
        p2.add(l2);
        p2.add(f2);
        p3.add(l3);
        p3.add(f3);
        p4.add(b1);
        p4.add(b2);
        p5.add(b3);
        p5.add(b4);        this.add(p1);        this.add(p2);        this.add(p3);        this.add(p4);        this.add(p5);
        b1.addActionListener(this);
        b2.addActionListener(this);
        b3.addActionListener(this);
        b4.addActionListener(this);
        b3.setEnabled(false);
        b4.setEnabled(false);        this.setSize(350, 450);        this.setVisible(true);
    }
    public void actionPerformed(ActionEvent e) {        // TODO Auto-generated method stub
        if(e.getSource()==b1){//增加图书
            String sql="insert into book values('"+f1.getText()+"','"+f2.getText()+"','"+f3.getText()+"')";            if(b.update(sql)){
                f2.setText("");
                f3.setText("");                JOptionPane.showMessageDialog(null, "图书增加成功");
            }else{                JOptionPane.showMessageDialog(null, "图书编号已存在");
                f1.setText("");
                f2.setText("");
                f3.setText("");
            }
        }else if(e.getSource()==b2){//查找图书
            String sql="select *from book where bookid='"+f1.getText()+"'";
            rs=b.find(sql);            try {                while(rs.next()){
                    f2.setText(rs.getString(2));
                    f3.setText(rs.getString(3));
                    b3.setEnabled(true);
                    b4.setEnabled(true);
                }
            } catch (SQLException e1) {                // TODO Auto-generated catch block
                e1.printStackTrace();                JOptionPane.showMessageDialog(null, "您查找的编号不存在,请重新查找");
                f1.setText("");
                f2.setText("");
                f3.setText("");
            }
        }else if(e.getSource()==b3){//修改图书资料
            String sql="update book set bookname='"+f2.getText()+"',bookauthor='"+f3.getText()+"'where bookid='"+f1.getText()+"'";            if(b.update(sql)){                JOptionPane.showMessageDialog(null, "修改成功");
                f2.setText("");
                f3.setText("");
                b3.setEnabled(false);
                b4.setEnabled(false);
            }else{                JOptionPane.showMessageDialog(null, "修改失败,可能您修改的图书编号不存在");
            }
        }else if(e.getSource()==b4){//删除图书
            String sql="delete from book where bookid='"+f1.getText()+"'";            if(b.update(sql)){                JOptionPane.showMessageDialog(null, "图书成功删除");
                f1.setText("");
                f2.setText("");
                f3.setText("");
                b3.setEnabled(false);
                b4.setEnabled(false);
            }else{                JOptionPane.showMessageDialog(null, "没能查找到您要删除的图书编号");
            }
        }
    }
}

主函数

 

}



本文转自lzwxx 51CTO博客,原文链接:
http://blog.51cto.com/13064681/1944371

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
13天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
52 10
|
13天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
81 6
|
2天前
|
安全 Java 调度
Java线程:深入理解与实战应用
Java线程:深入理解与实战应用
15 0
|
2天前
|
Java
Java中的并发编程:理解和应用线程池
【4月更文挑战第23天】在现代的Java应用程序中,性能和资源的有效利用已经成为了一个重要的考量因素。并发编程是提高应用程序性能的关键手段之一,而线程池则是实现高效并发的重要工具。本文将深入探讨Java中的线程池,包括其基本原理、优势、以及如何在实际开发中有效地使用线程池。我们将通过实例和代码片段,帮助读者理解线程池的概念,并学习如何在Java应用中合理地使用线程池。
|
7天前
|
Java 关系型数据库 MySQL
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
UWB (ULTRA WIDE BAND, UWB) 技术是一种无线载波通讯技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。一套UWB精确定位系统,最高定位精度可达10cm,具有高精度,高动态,高容量,低功耗的应用。
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
|
7天前
|
设计模式 算法 Java
Java中的设计模式及其应用
【4月更文挑战第18天】本文介绍了Java设计模式的重要性及分类,包括创建型、结构型和行为型模式。创建型模式如单例、工厂方法用于对象创建;结构型模式如适配器、组合关注对象组合;行为型模式如策略、观察者关注对象交互。文中还举例说明了单例模式在配置管理器中的应用,工厂方法在图形编辑器中的使用,以及策略模式在电商折扣计算中的实践。设计模式能提升代码可读性、可维护性和可扩展性,是Java开发者的必备知识。
|
7天前
|
安全 Java API
函数式编程在Java中的应用
【4月更文挑战第18天】本文介绍了函数式编程的核心概念,包括不可变性、纯函数、高阶函数和函数组合,并展示了Java 8如何通过Lambda表达式、Stream API、Optional类和函数式接口支持函数式编程。通过实际应用案例,阐述了函数式编程在集合处理、并发编程和错误处理中的应用。结论指出,函数式编程能提升Java代码的质量和可维护性,随着Java语言的演进,函数式特性将更加丰富。
|
8天前
|
Java API 数据库
深入解析:使用JPA进行Java对象关系映射的实践与应用
【4月更文挑战第17天】Java Persistence API (JPA) 是Java EE中的ORM规范,简化数据库操作,让开发者以面向对象方式处理数据,提高效率和代码可读性。它定义了Java对象与数据库表的映射,通过@Entity等注解标记实体类,如User类映射到users表。JPA提供持久化上下文和EntityManager,管理对象生命周期,支持Criteria API和JPQL进行数据库查询。同时,JPA包含事务管理功能,保证数据一致性。使用JPA能降低开发复杂性,但需根据项目需求灵活应用,结合框架如Spring Data JPA,进一步提升开发便捷性。
|
10天前
|
JavaScript 关系型数据库 MySQL
❤Nodejs 第二章(Node连接本地数据库)
【4月更文挑战第2天】本文介绍了如何使用Node.js连接本地MySQL数据库。首先,提到了在MySQL官网下载安装数据库和使用Navicat for MySQL进行数据库管理。接着,通过`yarn add mysql`在项目中安装数据库依赖。然后,创建`app.js`文件,设置数据库连接参数,并建立连接进行查询操作。遇到导入模块的错误后,修改导入方式为CommonJS语法。
28 1
|
12天前
|
Java
探秘jstack:解决Java应用线程问题的利器
探秘jstack:解决Java应用线程问题的利器
17 1
探秘jstack:解决Java应用线程问题的利器