• java JBDC操作


    类似:c# 里面的ado.net  增删改查,动手做Demo  (当然实际企业开发很少用这种方式 )。

    ps:以前从一开始 搞ssm spring Boot spring Mvc 什么都懂一点。什么都不懂,从基础开始

    环境:IDEA,Mysql(客户端 HeidiSQL)

    第一步:下载jar (后续一般都是 Maven 类似c#里面的 Nuget Node里面的 npm 命令方式)这里采用最原始的办法。

    有人问在哪下载呢? 网上那么多 。看这片文章  https://www.cnblogs.com/dlsunf/p/9855195.html 

    新建项目(这里用的是控制台) 最后如图: 新建jar 文件夹

     2:添加jar 引用(看出net 里面的添加dll)

    编码开始: 类似net 里面是connection ,command 原理类似。

    * ①加载数据库驱动程序(Class.forName("数据库驱动类");)
    * ②连接数据库(Connection con  = DriverManager.getConnection();)
    * ③操作数据库(PreparedStatement stat = con.prepareStatement(sql);stat.executeQuery();)
    * ④关闭数据库,释放连接(con.close();)

    code:新建SqlJbdc 类 包括 初始化驱动,连接数据库,执行sql命令  关闭 ,打开连接。

    import java.sql.*;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    /**
     * Create by  on 2019-07-31
     * JDBC 测试学习使用 实际开发很少用到 ,
     * ①加载数据库驱动程序(Class.forName("数据库驱动类");)
     * ②连接数据库(Connection con  = DriverManager.getConnection();)
     * ③操作数据库(PreparedStatement stat = con.prepareStatement(sql);stat.executeQuery();)
     * ④关闭数据库,释放连接(con.close();)
     * @author lsw
     */
    public class SqlJbdc {
    
        /**
         *  声明 Connection Statement对象
         */
        public static Connection conn = null;
        private  static Statement statement = null;
    
        /**
         * 加载数据库驱动 【注意不同版本的 mysql jar forName驱动写法不一样。】
         * @return 成功返回true false
         */
        public static  boolean initMySql(){
            //驱动类com.mysql.jdbc.Driver
            //就在 mysql-connector-java-5.0.8-bin.jar中
            //如果忘记了第一个步骤的导包,就会抛出ClassNotFoundException
            try {
                Class.forName("com.mysql.jdbc.Driver");
                connectMySql();
                return  true;
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
                return  false;
            }
        }
    
        /**
         * 连接数据库
         */
        private static void connectMySql() {
            // 建立与数据库的Connection连接
            // 数据库所处于的ip:127.0.0.1 (本机)
            // 数据库的端口号: 3306 (mysql专用端口号)
            // 数据库名称 csjbdc,编码方式 UTF-8
            // 账号 root 密码 a112102
            try {
                  conn =  DriverManager.getConnection(
                                  "jdbc:mysql://127.0.0.1:3306/csjbdc?characterEncoding=UTF-8",
                                  "root", "a112102");
                  statement = conn.createStatement();
            } catch (SQLException e) {
                // TODO: handle exception
                e.printStackTrace();
            }
        }
    
        /**
         * 方法接受的参数是SQL语句,无论是增加,删除,还是修改,都调用这个方法,每次传不同的SQL语句作为参数
         * @param sql
         */
        public static void execute(String sql) {
            try {
                if (conn==null){
                    connectMySql();
                }
                statement.execute(sql);
                System.out.println("sql执行ok !");
            } catch (Exception e) {
                System.out.println("execute:方法sql执行失败 !"+e.toString());
            }finally {
                connectionClose();
            }
        }
    
    
        /**
         * 查询 返回list 还是c#大法好 直接返回dt
         * https://jingyan.baidu.com/article/8065f87f80dd5c233124980f.html
         * @param sql 语句
         */
        public static List querySql(String sql) {
            List list = new ArrayList();
            try {
                if (conn==null){
                    connectMySql();
                }
                //ResultSet 类似 c# dataReader
                ResultSet rs = statement.executeQuery(sql);
                ResultSetMetaData md = rs.getMetaData();
                int columnCount = md.getColumnCount();
                while (rs.next()) {
                    Map rowData = new HashMap();
                    for (int i = 1; i <= columnCount; i++) {
                        rowData.put(md.getColumnName(i), rs.getObject(i));
                    }
                    list.add(rowData);
                }
            } catch (Exception e) {
                System.out.println("Query:方法sql执行失败 !"+e.toString());
            }finally {
                connectionClose();
            }
            return list;
        }
    
        /**
         * 关闭Statement conn
         */
        private static void connectionClose() {
            try {
                if (statement != null) {
                    statement.close();
                }
                if (conn != null) {
                    conn.close();
                    conn=null;
                }
            } catch (SQLException e) {
                // TODO: handle exception
                e.printStackTrace();
            }
        }
    }

    调用:

    import java.awt.*;
    import java.sql.*;
    import java.util.List;
    
    /**
     * 测试demo
     */
    public class Main {
    
        public static void main(String[] args) {
            //初始话 mysql
            boolean isOk = SqlJbdc.initMySql();
            if (!isOk) {
                System.out.println( "初始化,或者连接mysql失败" );
                return;
            }
            // 缺点 太多引号 单号,无法防止注入, 预编译机制 使用 PreparedStatement代替
            String sqlAdd = String.format( "insert into javajbdc(name) values('%s')", "圣安东尼奥" );
            SqlJbdc.execute( sqlAdd );
    
            String sqlDelete = "delete from javajbdc where id=2 ";
            SqlJbdc.execute( sqlDelete );
    
            String sqlUpdate = "update javajbdc set name = '张三 ' where name = '张三 兄弟' ";
            SqlJbdc.execute( sqlUpdate );
    
            //PreparedStatement 使用
            String sqlInsert = "insert into javajbdc(name) values(?)";
            try {
                SqlJbdc.connectMySql();
                PreparedStatement ps = SqlJbdc.conn.prepareStatement( sqlInsert );
                // 设置参数,执行
                for (int i = 0; i < 10; i++) {
                    ps.setString( 1, "安东尼" + i );
                    ps.execute();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
    
            //查询
            String sqlQuery = "select * from javajbdc";
            List li = SqlJbdc.querySql( sqlQuery );
            //不是length 不是count 而是size
            for (int i = 0; i < li.size(); i++) {
                System.out.println( li.get( i ) );
            }
        }
    }

    shift+f10

    运行结果:

    数据库查询:

    感悟:第一步添加jar , java 中没有dataTable。  length count 还有个size。

    下一次看SERVLET ,[Struts],[Spring]...................一步一步来吧 ssm spring mvc spring boot 我在路上来了。

  • 相关阅读:
    【转】BFT类共识协议概览与分析实测
    谈谈架构设计的八条原则
    Python爬虫入门教程 61-100 写个爬虫碰到反爬了,动手破坏它!
    Python如何实现单步调试
    Python如何实现单步调试
    Flash调用Alchemy编译的代码时出现Error #1506的解决
    Flash调用Alchemy编译的代码时出现Error #1506的解决
    Flash调用Alchemy编译的代码时出现Error #1506的解决
    Flash调用Alchemy编译的代码时出现Error #1506的解决
    showModalDialog使用讲解
  • 原文地址:https://www.cnblogs.com/y112102/p/11277656.html
Copyright © 2020-2023  润新知