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 ...
随机推荐
- JQuey中ready()的4种写法
在jQuery中,对于ready()方法,共有4种写法: (1)写法一: $(document).ready(functin(){ //代码部分 }) 分析:这种代码形式是最常见的,其中$(docum ...
- Java字符串操作工具类
import java.io.ByteArrayOutputStream; import java.io.UnsupportedEncodingException; import java.lang. ...
- Python学习日记(三十四) Mysql数据库篇 二
外键(Foreign Key) 如果今天有一张表上面有很多职务的信息 我们可以通过使用外键的方式去将两张表产生关联 这样的好处能够节省空间,比方说你今天的职务名称很长,在一张表中就要重复的去写这个职务 ...
- Ubuntu16.04 网络配置
Ubuntu 网络配置 安装Ubuntu操作系统之后,为了通过Xshell连接主机,或者连接其他主机.需要进行如下网络配置和ssh服务配置. 1 网络配置 1.1 修改网络配置信息 sudo vi / ...
- django 的form登录 注册
#!/usr/bin/env python # -*- coding: utf8 -*- #__Author: "Skiler Hao" #date: 2017/3/30 15:4 ...
- minikube国内在线部署体验
问题描述: 快速学习k8s的各个组件的作用及yml的编写,minikube很适合. how to install Minikube, a tool that runs a single-node Ku ...
- 详解shell脚本括号区别--$()、$「 」、$「 」 、$(()) 、「 」 、「[ 」]
概述 很多时候我们在写shell脚本的时候总会碰到不同的括号,那么这些不同的括号有什么区别呢? $() 用于命令交换 说明:平时脚本用的``符号也是用于命令交换的哦,和$() 的操作是一样的 ${ } ...
- zsh of kali
首先安装zsh: # apt-get update # apt-get install zsh -y 然后直接使用仓库脚本: # sh -c "$(wget https://raw.gith ...
- SpringCloud2.0 Hystrix Ribbon 基于Ribbon实现断路器 基础教程(六)
1.启动[服务中心]集群,工程名:springcloud-eureka-server 参考 SpringCloud2.0 Eureka Server 服务中心 基础教程(二) 2.启动[服务提供者]集 ...
- 将mysql从MyISAM更改为INNODB
今天更新django中的表字段,由于mysql从5.1升级到5.7.以前的外键关联必须从MYISAM改新为INNODB才可以继续. 过程有点刺激,但还好,只要想清楚了过程,提前作好备份,就没啥大问题. ...