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