一、关键四元素

   ①    com.mysql.jdbc.Driver      mysql数据库连接jar包。   获取途径: 链接:https://pan.baidu.com/s/1SFcjuut5BsO-4x3U-SdG6Q        提取码:aafz   

  ②    private static final String URL = "jdbc:mysql://localhost:3306/zhaowejie?" + "useUnicode=true&characterEncoding=UTF8";   这是数据库的连接路径。

“jdbc”是协议开头。

“mysql”是子协议数据库名称,代表数据库是mysql。

//localhost:3306”是服务器的IP地址和端口,“zhaowejie?”代表你要连接得数据库的名字。

               "useUnicode=true&characterEncoding=UTF8" 指定操作数据库使用utf-8字符编码进行操作。

  ③   private static final String USER = "root";    数据库连接名。

  ④   private static final String USER = "root";    数据库连接密码。

二、代码实现

  

package machine;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCTest {

// 数据库连接ip,user,password需要修改
// private static final String
       private static final String URL = "jdbc:mysql://localhost:3306/zhaowejie?"+ "useUnicode=true&characterEncoding=UTF8";
       private static final String USER = "root";
  private static final String PASSWORD = "123456";

public static void main(String[] args) {

  Connection conn = null;
     Integer id = 0;
  String userName = null;
  String userPassWord = null;
try {
  // 1.加载驱动程序
  Class.forName("com.mysql.jdbc.Driver");
  // 2.获得数据库的连接
  conn = DriverManager.getConnection(URL, USER, PASSWORD);
  // 3.通过数据库的连接操作数据库,实现增删改查(使用Statement类)
  query(conn, 1);
  insert(conn, 3, "zhaoweijie", "123445");
  update(conn, "ws", "23456", 1);
} catch (ClassNotFoundException e) {
  e.printStackTrace();
} catch (SQLException e) {
  e.printStackTrace();
}
}

// 查询
private static void query(Connection conn, Integer id) throws SQLException {
  String sql = "SELECT id, userName , userPassWord FROM USERS WHERE id = ?";
  PreparedStatement ps = null;
  ResultSet rs = null;
try {
  ps = conn.prepareStatement(sql);
  ps.setInt(1, id);
  rs = ps.executeQuery();
  while (rs.next()) {
  id = rs.getInt(1);
  String userName = rs.getString(2);
  String userPassWord = rs.getString(3);
  System.out.println("id=" + id + "userName=" + userName + "userPassWord=" + userPassWord);
}
} catch (SQLException e) {
  e.printStackTrace();
} finally {
  rs.close();
conn.close();
  ps.close();
}
}

  // insert
  private static void insert(Connection conn, Integer id, String userName, String userPassWord) throws SQLException {

  int i = 0;
  // sql 插入的语句
  String s = "" + "insert into users(id,userName,userPassWord) values(?,?,?)";
  PreparedStatement ps = null;

  // ResultSet rs=null;
try {
  ps = conn.prepareStatement(s);
  ps.setInt(1, id);
  ps.setString(2, userName);
  ps.setString(3, userPassWord);
  i = ps.executeUpdate();
} catch (SQLException e) {
  e.printStackTrace();
} finally {
  // rs.close();
  conn.close();
  ps.close();
}
}

  // update
  private static void update(Connection conn, String userName, String userPassword, Integer id) throws SQLException {
  int i = 0;
  String sql = "update users set userName = " + "'" + userName + "'" + "," + "userPassword = " + "'"+ userPassword + "'" + " " + "where id = " + id;
  Statement ps = null;

  // ResultSet rs=null;
try {
  // ps = conn.prepareStatement(sql);
  ps = conn.createStatement();
  i = ps.executeUpdate(sql);
} catch (SQLException e) {
  e.printStackTrace();
} finally {
  // rs.close();
  conn.close();
  ps.close();
}
}
}

   

jdbc-手写Java方法连接数据库的更多相关文章

  1. 手写JAVA虚拟机(二)——实现java命令行

    查看手写JAVA虚拟机系列可以进我的博客园主页查看. 我们知道,我们编译.java并运行.class文件时,需要一些java命令,如最简单的helloworld程序. 这里的程序最好不要加包名,因为加 ...

  2. 手写JAVA虚拟机(三)——搜索class文件并读出内容

    查看手写JAVA虚拟机系列可以进我的博客园主页查看. 前面我们介绍了准备工作以及命令行的编写.既然我们的任务实现命令行中的java命令,同时我们知道java命令是将class文件(字节码)转换成机器码 ...

  3. 6 手写Java LinkedHashMap 核心源码

    概述 LinkedHashMap是Java中常用的数据结构之一,安卓中的LruCache缓存,底层使用的就是LinkedHashMap,LRU(Least Recently Used)算法,即最近最少 ...

  4. 3 手写Java HashMap核心源码

    手写Java HashMap核心源码 上一章手写LinkedList核心源码,本章我们来手写Java HashMap的核心源码. 我们来先了解一下HashMap的原理.HashMap 字面意思 has ...

  5. 手写redux方法以及数组reduce方法

    reduce能做什么? 1)求和 2)计算价格 3)合并数据 4)redux的compose方法 这篇文章主要内容是什么? 1)介绍reduce的主要作用 2)手写实现reduce方法 0)了解red ...

  6. 2 手写Java LinkedList核心源码

    上一章我们手写了ArrayList的核心源码,ArrayList底层是用了一个数组来保存数据,数组保存数据的优点就是查找效率高,但是删除效率特别低,最坏的情况下需要移动所有的元素.在查找需求比较重要的 ...

  7. 1 手写Java ArrayList核心源码

    手写ArrayList核心源码 ArrayList是Java中常用的数据结构,不光有ArrayList,还有LinkedList,HashMap,LinkedHashMap,HashSet,Queue ...

  8. 阿里第二轮面试:手写Java二叉树

    阿里面试 现在很多公司在招聘开发岗位的时候,都会事先在招聘信息中注明面试者应当具备的知识技能,而且在面试的过程中,有部分对于技能掌握程度有严格要求的公司还会要求面试者手写代码,这个环节很考验面试者的基 ...

  9. JavaScript手写new方法

    1.看一下正常使用的new方法 function father(name){ this.name=name; this.sayname=function(){ console.log(this.nam ...

随机推荐

  1. flask前后端输出html页面(数组遍历)

    通过flask,输出页面 后端代码文件:app.py 前端html文件:output.html 1.打开(app.py) 导入相关模块: 2.定义方法:(app.py) 3.写入与后端定义好的参数:( ...

  2. .Net微服务实践(三):Ocelot配置路由和请求聚合

    目录 配置 路由 基本配置 占位符 万能模板 优先级 查询参数 请求聚合 默认聚合 自定义聚合 最后 在上篇.Net微服务实践(二):Ocelot介绍和快速开始中我们介绍了Ocelot,创建了一个Oc ...

  3. python fabric 练习记录

    https://blog.csdn.net/freeking101/article/details/81103945   fabric 域名

  4. 使用 Visual Studio 开发、测试和部署 Azure Functions(二)测试,部署

    1,引言 上一篇介绍了使用使用 Visual Studio 开发 "Azure Functions" 函数,此篇介绍 “Azure Functions” 的测试以及直接从 Vist ...

  5. Springboot系列(四)web静态资源配置详解

    Springboot系列(四)web静态资源配置 往期精彩 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 SpringBoot系列(三)配 ...

  6. time_wait 详解和解决方案

    1. 产生原因 2. 导致问题 3. Nginx 3.1 长连接 4. 解决方案 5 .参考 产生原因 TCP 连接关闭时,会有 4 次通讯(四次挥手),来确认双方都停止收发数据了.如上图,主动关闭方 ...

  7. ORM框架对分表分库的实现

    *:first-child { margin-top: 0 !important; } .markdown-body>*:last-child { margin-bottom: 0 !impor ...

  8. Redis对象——集合(Set)

    集合类型 (Set) 是一个无序并唯一的键值集合.它的存储顺序不会按照插入的先后顺序进行存储. 集合类型和列表类型的区别如下: 列表可以存储重复元素,集合只能存储非重复元素: 列表是按照元素的先后顺序 ...

  9. java中OOM错误解析(面试可以聊的东西)

    嗯,生活加油鸭.... 实习中遇到OOM错误 GC overhead limit exceeded 问题,所以整理一下OOM异常问题: 先看一下“阿里的开发手册”对OOM的描述: OOM,全称“Out ...

  10. 2020 PHP 初级 / 基础面试题,祝你金三银四跳槽加薪 (适合基础不牢固的 PHPer)

    1.PHP 语言的一大优势是跨平台,什么是跨平台? PHP 的运行环境最优搭配为 Apache+MySQL+PHP,此运行环境可以在不同操作系统(例如 windows.Linux 等)上配置,不受操作 ...