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

java JBDC操作的更多相关文章

  1. Java实现操作dos命令

    java实现操作dos命令的两种方式 1.读取文件中的命令 package com; import java.io.InputStream; public class cmd { public sta ...

  2. JAVA 链表操作:循环链表

    主要分析示例: 一.循环链表简述 二.单链表循环链表 三.双链表循环链表 一.循环链表简述 循环链表即链表形成了一个循环的结构,尾节点不再指向NULL,而是指向头节点HEAD,此时判定链表的结束是尾节 ...

  3. java日期操作大全

    摘自(http://www.blogjava.net/i369/articles/83483.html) java日期操作 大全 先来一个:  取得指定月份的第一天与取得指定月份的最后一天  http ...

  4. Java CSV操作(导出和导入)

    Java CSV操作(导出和导入)  CSV是逗号分隔文件(Comma Separated Values)的首字母英文缩写,是一种用来存储数据的纯文本格式,通常用于电子表格或数据库软件.在 CSV文件 ...

  5. Java开发--操作MongoDB

    http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过前一篇文章我们 ...

  6. hive-通过Java API操作

    通过Java API操作hive,算是测试hive第三种对外接口 测试hive 服务启动 package org.admln.hive; import java.sql.SQLException; i ...

  7. HDFS的Java客户端操作代码(HDFS的查看、创建)

    1.HDFS的put上传文件操作的java代码: package Hdfs; import java.io.FileInputStream; import java.io.FileNotFoundEx ...

  8. Java文件操作源码大全

    Java文件操作源码大全 1.创建文件夹 52.创建文件 53.删除文件 54.删除文件夹 65.删除一个文件下夹所有的文件夹 76.清空文件夹 87.读取文件 88.写入文件 99.写入随机文件 9 ...

  9. Java路径操作具体解释

    1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或文件夹在硬盘上真正的路径.(URL和物理路径)比如: C:\xyz\test.txt 代表了test.txt文件的绝对路径.http://w ...

随机推荐

  1. python全栈学习路线

    python全栈学习路线-查询笔记 查询目录 一,硬件                                                                    十一,数据 ...

  2. iOS开发,导入c文件引发的Could not build module 'UIKit'问题

    导致出现异常的原因是是因为工程中添加了某(第三方开源库) 一般情况下出现“Unknown type name”是头文件互相引用出现的,这里可以排除,由于源码使用是c\c++与oc混编, 考虑新的XCo ...

  3. Matlab责任链模式

    责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦,本人根据https://www.ru ...

  4. nodeJS从入门到进阶一(基础部分)

    一.Node.js基础知识 1.概念 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是JavaScript的运行环境 Node.js 使用了一个事件驱动.非阻塞 ...

  5. 原生js ajax与jquery ajax的区别

    原生js ajax的调用: ajax({ type : "get", url : "02_ajax_get.txt", data : { "userN ...

  6. 归并排序python实现源码

    将开发过程经常用到的一些代码片段收藏起来,下面的资料是关于归并排序python实现的代码,应该能对码农们有一些用. def mergesort(arr): if len(arr) == 1: retu ...

  7. 【书评:Oracle查询优化改写】第四章

    [书评:Oracle查询优化改写]第四章 BLOG文档结构图 一.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① check的 ...

  8. App抓包代理设置

    1.设置Fiddler 打开Fiddler,Tools  -->  Fiddler Options  -->  HTPS (配置完后记得要重启Fiddler) 选中"Decrpt ...

  9. 设置Linux 程序lib搜索目录

    设置Linux 程序lib搜索目录:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:lib路径,例如: export LD_LIBRARY_PATH=$LD_LIBRA ...

  10. mysql数据库创建、查看、修改、删除

    一.创建数据库 使用默认字符集 不指定字符集时,mysql使用默字符集,从mysql8.0开始,默认字符集改为utf8mb4 ,创建数据库的命令为create database 数据库名称. #创建数 ...