类似: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. python3中try异常调试 raise 异常抛出

    一.什么是异常? 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行. 一般情况下,在Python无法正常处理程序时就会发生一个异常. 异常是Python对象,表示一个错误. 当Py ...

  2. Solr字段类型

    一.一般属性 1.name fieldType的名称.该值用于字段定义中的类型属性,强烈建议名称仅包含字母数字和下划线,不能以数字开头[非强制]. 2.class 用于存储和索引此类型数据的类名.可以 ...

  3. springboot通过idea打jar包

    springboot打jar包 一.      检查pom文件 <packaging>jar</packaging> 二.      切换到maven窗口 三.      先c ...

  4. Web渗透

  5. 线程中的join方法,与synchronized和wait()和notify()的关系

    什么时候要用join()方法? 1,join方法是Thread类中的方法,主线程执行完start()方法,线程就进入就绪状态,虚拟机最终会执行run方法进入运行状态.此时.主线程跳出start方法往下 ...

  6. Python入门篇-装饰器

    Python入门篇-装饰器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.装饰器概述 装饰器(无参) 它是一个函数 函数作为它的形参 返回值也是一个函数 可以使用@functi ...

  7. 如何将scratch3.0的作业自动提交到后台数据库

    大家都知道Scratch3.0开发后,默认是可以下载文件到电脑,但是如果是作为商业系统来说,我们需要将作业自动的提交到后台,因此有了这篇文章. 首先,我们来分解下开发步骤: 1.在菜单栏新增一个上传到 ...

  8. Python 推送RabbitMQ

    username = 'xxxxxxxx' pwd = 'xxxxxxxx' user_pwd = pika.PlainCredentials(username, pwd) s_conn = pika ...

  9. python——selenium库的使用

    selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Fire ...

  10. 【AirTest自学】AirTest工具介绍和入门学习(一)

    ==================================================================================================== ...