类似: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. 服务注册发现(一) Consul 简介及 windows版本的安装与部署

    Consul是一个用来实现分布式系统的服务发现与配置的开源工具.他主要由多个组成部分: 服务发现:客户端通过Consul提供服务,类似于API,MySQL,或者其他客户端可以使用Consul发现服务的 ...

  2. MySQL数据库之互联网常用架构方案

    一.数据库架构原则 高可用 高性能 一致性 扩展性 二.常见的架构方案 方案一:主备架构,只有主库提供读写服务,备库冗余作故障转移用 jdbc:mysql://vip:3306/xxdb 高可用分析: ...

  3. 数据仓库模型ETL架构(DWI/DWR/DM)

    1.DWI DWI:数据湖.数据砥柱,一般存放在HDFS 数据仓库的基础数据来源,各种杂七杂八的数据 关键点:数据清洗.数据整合.异常处理.增量获取 ETL:E-数据抽取.数据清洁.格式转换,T-生成 ...

  4. 如何传递大文件(GB级别)

    一.拆分:压缩工具,压缩并拆分为多个小文件. 二.QQ离线传输 QQ离线文件有限制条件: 1.离线传送的文件,为用户保存7天,逾期接收方不接收文件,系统将自动删除该文件: 2. 离线传送的文件,单个文 ...

  5. MyBatis 中如何调用 Java 的 enum (枚举) 字段

    事先作成一 enum,如下: public enum CityCode { ALL("000"), BEIJING("010"), SHANGHAI(" ...

  6. django引用模板报错Template file 'index.html' not found

    产生报错的原因在于index.html未被引用到,处理办法是在setting.py中加入app的name. 我这里app的名字叫sign,所以加入sign就好了 再次访问就好啦

  7. Linux-存储服务之NFS

    NFS介绍 官方文档 NFS(Network File System)即网络文件系统,它最大的功能就是通过TCP/IP网络共享资源.在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS ...

  8. Rendering in UE4

    Intro Thinking performance. Identify the target framerate, aim your approach on hitting that target ...

  9. Relief 过滤式特征选择

    给定训练集{(x1,y1),(x2,y2).....(xm,ym)} ,对每个示例xi,Relief在xi的同类样本中寻找其最近邻xi,nh(猜中近邻),再从xi的异类样本中寻找其最近邻xi,nm(猜 ...

  10. C#使用ODP.NET(Oracle.ManagedDataAccess.dll)操作Oracle数据库

    在刚接触C#的时候由于公司使用的就是Oracle数据库,那么C#怎么连接Oracle数据库就成了首要去掌握的知识点了.在那时没有ODP.NET,但visual studio却对Oralce数据库的调用 ...