zoukankan      html  css  js  c++  java
  • 通过JDBK操作数据库

    一、配置程序——让我们程序能找到数据库的驱动jar包
    1.把.jar文件复制到项目中去,整合的时候方便。
    2.在eclipse项目右击“构建路径”--“配置构建路径”--“库”--“添加外部jar”--找到数据库的驱动jar包--点击确定。会在左侧包资源管理器中出现“引用的库”,在里面就能找到我们刚才导入的jar包。
    二、与数据库建立连接
    1.加载数据访问驱动
    2.连接到数据库
    建立与MySQL数据库的连接:
    Class.forName("com.mysql.jdbc.Driver");//加载数据库驱动
    Connection conn = DriverManager.getConnectio ("jdbc:mysql://127.0.0.1:3306/mydb","账号","密码");
    Statement state = conn.createStatement();//建立数据库连接,获得连接对象conn;
    建立与SQL Server数据库的连接
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//加载数据库驱动
    Connection conn = DriverManager.getConnectio ("jdbc:sqlsever://127.0.0.1:1433/DatabaseName=mydb","账号","密码");//建立数据库连接,获得连接对象conn;
    其中mydb是表名。
    三、查询、插入、修改、删除数据库中的数据

    建立表login

    1.查询数据
    1.1使用Statement接口制作一个登录验证

    package com.itnba.maya.login;
    import java.sql.*;
    import java.util.*;
    public class Test {
        public static void main(String[] args) throws Exception {
            Scanner sc = new Scanner(System.in);
            String zhang = sc.nextLine();
            String pas = sc.nextLine();
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn =DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/wang?characterEncoding=GBK", "root", "");//括号里面不能用空格
            Statement state = conn.createStatement();
            String sql = "select * from login where zhanghao='"+zhang+"' and  password = '"+pas+"'";
            ResultSet rs =  state.executeQuery(sql);//获得一个查询结果集。
            Boolean ok = rs.next();
            if(ok)
            {
                System.out.println("恭喜您"+rs.getString(3)+"登录成功");
            }
            else
            {
                System.out.println("您输入的账号密码有误");
            }
            conn.close();
        }
    }

    账号密码输入正确时:输入 zhangsan  zhangsan 出现 “恭喜您张三登录成功”

    账号密码输入错误时:输入 zhangsan  lisi    出现“您输入的账号密码有误”

    但是上述方法会有“注入”问题出现,如输入   asdf' or 1=1 #会出现登录成功。输入中的单引号会和前面的单引号形成配对,而#会注释掉后面的语句,1=1随时成立,就会出现登录成功。

    1.2使用PreparedStatement接口制作一个登录验证

    public class Test {
        public static void main(String[] args) throws Exception {
            Scanner sc = new Scanner(System.in);
            String zhang = sc.nextLine();
            String pas = sc.nextLine();
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn =DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/wang?characterEncoding = GBK", "root", "");
            String sql = "select * from login where zhanghao=? and  password =?";
            PreparedStatement state = conn.prepareStatement(sql);
            state.setString(1, zhang);
            state.setString(2,pas);
            ResultSet rs =  state.executeQuery();
            Boolean ok = rs.next();
            if(ok)
            {
                System.out.println("恭喜您"+rs.getString(3)+"登录成功");
            }
            else
            {
                System.out.println("您输入的账号密码有误");
            }
            conn.close();
        }

    账号密码输入正确时:输入 zhangsan  zhangsan 出现 “恭喜您张三登录成功”

    账号密码输入错误时:输入 zhangsan  lisi    出现“您输入的账号密码有误”

    此种方式不会出现“注入” 问题。

    2.向数据库中插入数据

    2.1使用Statement接口插入数据

    public static void main(String[] args) throws Exception {
            Scanner sc = new Scanner(System.in);
            String zhang = sc.nextLine();
            String pas = sc.nextLine();
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn =DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/wang?characterEncoding = GBK", "root", "");
            Statement state = conn.createStatement();
            String sql = "insert into wang (zhanghao,password,name) values('zhangyu','zhangyu','张宇')";
            state.executeUpdate(sql);//插入 删除 更新数据时用update
    conn.close();
    }

    运行结果:

    2.2使用PreparedStatement接口插入数据

        public static void main(String[] args) throws Exception {
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn =DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/wang?characterEncoding=GBK", "root", "");
            String sql ="insert into login (zhanghao,password,name) values(?,?,?)";
             PreparedStatement state = conn.prepareStatement(sql); 
            state.setString(1, "zhangyu");
            state.setString(2,"zhangyu");
            state.setString(3,"张宇");
            state.executeUpdate();
             conn.close();
    }

    运行结果:

  • 相关阅读:
    网易企业免费邮箱
    168. Excel Sheet Column Title
    167.Two Sum II-Input array is sorted
    166. Fraction to Recurring Decimal
    165 Compare Version Numbers
    164. Maximum Gap
    163.Missing Ranges
    162.Find Peak Element
    161.One Edit Distance
    160. Intersection of Two Linked Lists
  • 原文地址:https://www.cnblogs.com/ermeng/p/6249978.html
Copyright © 2011-2022 走看看