jdbc-手写Java方法连接数据库
一、关键四元素
① 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方法连接数据库的更多相关文章
- 手写JAVA虚拟机(二)——实现java命令行
查看手写JAVA虚拟机系列可以进我的博客园主页查看. 我们知道,我们编译.java并运行.class文件时,需要一些java命令,如最简单的helloworld程序. 这里的程序最好不要加包名,因为加 ...
- 手写JAVA虚拟机(三)——搜索class文件并读出内容
查看手写JAVA虚拟机系列可以进我的博客园主页查看. 前面我们介绍了准备工作以及命令行的编写.既然我们的任务实现命令行中的java命令,同时我们知道java命令是将class文件(字节码)转换成机器码 ...
- 6 手写Java LinkedHashMap 核心源码
概述 LinkedHashMap是Java中常用的数据结构之一,安卓中的LruCache缓存,底层使用的就是LinkedHashMap,LRU(Least Recently Used)算法,即最近最少 ...
- 3 手写Java HashMap核心源码
手写Java HashMap核心源码 上一章手写LinkedList核心源码,本章我们来手写Java HashMap的核心源码. 我们来先了解一下HashMap的原理.HashMap 字面意思 has ...
- 手写redux方法以及数组reduce方法
reduce能做什么? 1)求和 2)计算价格 3)合并数据 4)redux的compose方法 这篇文章主要内容是什么? 1)介绍reduce的主要作用 2)手写实现reduce方法 0)了解red ...
- 2 手写Java LinkedList核心源码
上一章我们手写了ArrayList的核心源码,ArrayList底层是用了一个数组来保存数据,数组保存数据的优点就是查找效率高,但是删除效率特别低,最坏的情况下需要移动所有的元素.在查找需求比较重要的 ...
- 1 手写Java ArrayList核心源码
手写ArrayList核心源码 ArrayList是Java中常用的数据结构,不光有ArrayList,还有LinkedList,HashMap,LinkedHashMap,HashSet,Queue ...
- 阿里第二轮面试:手写Java二叉树
阿里面试 现在很多公司在招聘开发岗位的时候,都会事先在招聘信息中注明面试者应当具备的知识技能,而且在面试的过程中,有部分对于技能掌握程度有严格要求的公司还会要求面试者手写代码,这个环节很考验面试者的基 ...
- JavaScript手写new方法
1.看一下正常使用的new方法 function father(name){ this.name=name; this.sayname=function(){ console.log(this.nam ...
随机推荐
- Jenkins打造多分支流水线指南
overview: 多分支工作流程带来了以下几个关键能力: 在代码仓库中,每个新分支都有自己单独的工作流水线(job). 每个工作流水线都记录了对应分支的构建和变更历史. 可以自定义设置流水线随着分支 ...
- arcgis server建完站点之后修改默认6080端口号
1.首先找到arcgis server的安装路径,找到server.xml文件,修改其中一处的6080端口为你想更改的端口号,例如8888.具体操作如下图所示: 默认的安装路径为:D:\Program ...
- 【LeetCode】141.环形链表
题目描述 141.环形链表 给定一个链表,判断链表中是否有环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos 是 -1,则在该链表中 ...
- mabatis入门五 高级结果映射
一.创建测试的表和数据 1.创建表 1CREATE TABLE items ( 2 id INT NOT NULL AUTO_INCREMENT, 3 itemsname VARCHAR(32) NO ...
- [noip模拟]B<构造>
[题目描述] 在两个n*m的网格上染色,每个网格中被染色的格子必须是一个四联通块(没有任何格子被染色也可以),四联通块是指所有染了色的格子可以通过网格的边联通,现在给出哪些格子在两个网格上都被染色了, ...
- 迁移桌面程序到MS Store(15)——通过注册表开启Developer Mode
没想到该系列不仅没有太监,还打算更新一个小短篇.在各种大厂小厂工作的各位想必都知道Windows域的概念.入域的机器很多的设置就由不得当前登入所使用的域账号了,Windows的更新和安全等众多的设置均 ...
- 【Ubuntu】常用命令汇总,整理ing
Ubuntu 常用命令(在此页面中Ctrl+F即可快速查找) 在Ubuntu系统使用过程中,会不断地接触到命令行操作,下面对一些常用的命令进行汇总,方便查找. 1.文件操作 1.1 文件复制拷贝 cp ...
- Vertica的这些事(二)——SQL-Server、Oracle、MySQL和Vertica数据库常用函数对比
SQL Server.Oracle.MySQL和Vertica数据库常用函数对比 Vertica数据库是HP公司新收购的用于BI方面的数据库. 绝对值 S:select abs(-1) value O ...
- Linux基础:Day04
进程管理1.操作系统基础 调用:kernel通过给应用程序提供system call方式来提供硬件资源: 注意:这个应用程序也包括库文件: 库文件是运行在ring 0上的一段程序代码,不对客户直接 ...
- mysql服务器内存使用情况总结
活动链接(动态)使用的内存数量如下所示: per_connection_memory = read_buffer_size //memory for sequential table scans +r ...