热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

一:步骤1.sqlserver建立数据库和相关表2.建立数据源(1).打开控制面板找到管理,打开ODBC选项或直接搜索数据源(2).打开数据源配置后点击添加,选择sqlserver点

一:步骤

1.sql server建立数据库和相关表
2.建立数据源
 (1).打开控制面板找到管理,打开ODBC选项或直接搜索数据源
 (2).打开数据源配置后点击添加,选择sql server点击完成
 (3).给数据源命名,服务器选择本机电脑sql server 服务器名下一步


后面全部点下一步或确定就可以了。
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();
    }

}

推荐阅读
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
author-avatar
何俊雨_127
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有