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 我在路上来了。

原文地址:https://www.cnblogs.com/y112102/p/11277656.html