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

简介:

一:步骤

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, "没能查找到您要删除的图书编号");
            }
        }
    }
}

主函数

package mybook;public class frame_main {    public static void main(String[] args) {        // TODO Auto-generated method stub
        denglu d=new denglu();
    }


}



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

相关文章
|
5月前
|
SQL 机器学习/深度学习 人工智能
从“写SQL”到“聊数据”:NL2SQL如何用自然语言解锁数据库?
本文系统性地阐述了自然语言转SQL(NL2SQL) 技术如何让非技术背景的业务分析师实现数据自助查询,从而提升数据驱动决策的效率与准确性。
从“写SQL”到“聊数据”:NL2SQL如何用自然语言解锁数据库?
|
8月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
4月前
|
SQL 人工智能 Linux
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
484 5
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
|
3月前
|
SQL 存储 监控
SQL日志优化策略:提升数据库日志记录效率
通过以上方法结合起来运行调整方案, 可以显著地提升SQL环境下面向各种搜索引擎服务平台所需要满足标准条件下之数据库登记作业流程综合表现; 同时还能确保系统稳健运行并满越用户体验预期目标.
246 6
|
4月前
|
SQL Java 关系型数据库
Java连接MySQL数据库环境设置指南
请注意,在实际部署时应该避免将敏感信息(如用户名和密码)硬编码在源码文件里面;应该使用配置文件或者环境变量等更为安全可靠地方式管理这些信息。此外,在处理大量数据时考虑使用PreparedStatement而不是Statement可以提高性能并防止SQL注入攻击;同时也要注意正确处理异常情况,并且确保所有打开过得资源都被正确关闭释放掉以防止内存泄漏等问题发生。
201 13
|
5月前
|
SQL 人工智能 Java
用 LangChain4j+Ollama 打造 Text-to-SQL AI Agent,数据库想问就问
本文介绍了如何利用AI技术简化SQL查询操作,让不懂技术的用户也能轻松从数据库中获取信息。通过本地部署PostgreSQL数据库和Ollama模型,结合Java代码,实现将自然语言问题自动转换为SQL查询,并将结果以易懂的方式呈现。整个流程简单直观,适合初学者动手实践,同时也展示了AI在数据查询中的潜力与局限。
676 8
|
5月前
|
SQL 人工智能 Linux
SQL Server 2025 RC0 发布 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 RC0 发布 - 从本地到云端的 AI 就绪企业数据库
326 5
|
8月前
|
SQL 数据库 开发者
Python中使用Flask-SQLAlchemy对数据库的增删改查简明示例
这样我们就对Flask-SQLAlchemy进行了一次简明扼要的旅程,阐述了如何定义模型,如何创建表,以及如何进行基本的数据库操作。希望你在阅读后能对Flask-SQLAlchemy有更深入的理解,这将为你在Python世界中从事数据库相关工作提供极大的便利。
784 77
|
6月前
|
SQL 缓存 监控
SqlRest让SQL秒变Http API,还支持20+数据库(含国产数据库)
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
|
6月前
|
SQL 存储 数据库
SQL Server Management Studio (SSMS) 21 - 微软数据库管理工具
SQL Server Management Studio (SSMS) 21 - 微软数据库管理工具
1150 0