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 我在路上来了。
java JBDC操作的更多相关文章
- Java实现操作dos命令
java实现操作dos命令的两种方式 1.读取文件中的命令 package com; import java.io.InputStream; public class cmd { public sta ...
- JAVA 链表操作:循环链表
主要分析示例: 一.循环链表简述 二.单链表循环链表 三.双链表循环链表 一.循环链表简述 循环链表即链表形成了一个循环的结构,尾节点不再指向NULL,而是指向头节点HEAD,此时判定链表的结束是尾节 ...
- java日期操作大全
摘自(http://www.blogjava.net/i369/articles/83483.html) java日期操作 大全 先来一个: 取得指定月份的第一天与取得指定月份的最后一天 http ...
- Java CSV操作(导出和导入)
Java CSV操作(导出和导入) CSV是逗号分隔文件(Comma Separated Values)的首字母英文缩写,是一种用来存储数据的纯文本格式,通常用于电子表格或数据库软件.在 CSV文件 ...
- Java开发--操作MongoDB
http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过前一篇文章我们 ...
- hive-通过Java API操作
通过Java API操作hive,算是测试hive第三种对外接口 测试hive 服务启动 package org.admln.hive; import java.sql.SQLException; i ...
- HDFS的Java客户端操作代码(HDFS的查看、创建)
1.HDFS的put上传文件操作的java代码: package Hdfs; import java.io.FileInputStream; import java.io.FileNotFoundEx ...
- Java文件操作源码大全
Java文件操作源码大全 1.创建文件夹 52.创建文件 53.删除文件 54.删除文件夹 65.删除一个文件下夹所有的文件夹 76.清空文件夹 87.读取文件 88.写入文件 99.写入随机文件 9 ...
- Java路径操作具体解释
1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或文件夹在硬盘上真正的路径.(URL和物理路径)比如: C:\xyz\test.txt 代表了test.txt文件的绝对路径.http://w ...
随机推荐
- JavaScript之鼠标事件
事件三要素: 事件源.事件类型(点击onclick)=function(){ 事件触发后执行的代码 } 案例: function abb(a){ return document.getElementB ...
- JAVA导出excel 直接弹出下载框
转自:https://blog.csdn.net/qq_38423105/article/details/80782283 效果展示: 1.首先准备jar包 <dependency> ...
- Maven整合eclipse
1.配置eclipse本地Maven 点击Window-->Perference 选择Maven-->Installations 点击Add添加本地Maven 然后勾选本地Maven, ...
- day 02 作业 预科
目录 作业 作业 ==1.什么是编程== 通过使用编程语言做一些事情,表达一些自己的想法. ==2.简述计算机五大组成.== 计算机由cpu ,运算器 ,控制器,存储器(外存,内存) 输入设备 输出设 ...
- MySQL Backup--Xtrabackup介绍
Xtrabackup介绍 Xtrabackup是由Percona公司研发的开源热备工具,支持MYSQL 5.0 以上版本. 由于Xtrabackup支持备份innodb表,实际生产环境中我们使用的工具 ...
- C:\Program Files\Docker\Docker\Resources\bin\docker.exe: no matching manifest for windows/amd64 10.0.17763 in the manifest list entries.
右击t图标→Settings 修改红框为True,应用修改即可
- 外部服务发现-ingress
Ingress`其实就是从 kuberenets 集群外部访问集群的一个入口,将外部的请求转发到集群内不同的 Service 上,其实就相当于 nginx.haproxy 等负载均衡代理服务器,Ing ...
- Pods
Pods Pod概念 Pod是kubernetes集群应用中的创建和部署的最小.最简单的kubernetes对象模型单元的基本执行单元.Pod表示在集群中运行的进程. Pod 封装了应用程序的容器(一 ...
- Java线程状态、线程start方法源码、多线程、Java线程池、如何停止一个线程
下面将依次介绍: 1. 线程状态.Java线程状态和线程池状态 2. start方法源码 3. 什么是线程池? 4. 线程池的工作原理和使用线程池的好处 5. ThreadPoolExecutor中的 ...
- app开发-2
一.app登录注册实现 1.首先进行布局,mhead,mbody 在app index.html内创建一个 a链接通过mui.openWindow跳到登录页面 <a class="mu ...