jdbc连接可以大致分为5步:

1.注册驱动

2.获取连接

3.编写语句

4.执行语句

5.关闭连接

其中可以设置参数等等。

1.我们先建一个项目目录:

其中com.etc.dao为数据访问对象

com.etc.config 为配置文件的获取键值

com.etc.domain是实现包

com.etc.util是工具包

db.properties是配置文件

2.先写一个配置文件 db.properties 和相应的使用文件 JDBCConfig.java

 mysql.Driver=com.mysql.jdbc.Driver
mysql.url=jdbc:mysql://127.0.0.1:3310/day02
mysql.username=root
mysql.password=123456
 package com.etc.config;

 import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties; public class JDBCConfig {
public static String driver;
public static String url;
public static String username;
public static String password;
//必须使用静态代码块 优先加载 不然可能会报空指针异常
static {
//配置文件获取值
Properties pro = new Properties();
try {
//通过FileInputStream读文件
pro.load(new FileInputStream(new File("src/db.properties")));
//通过键获取值
driver = pro.getProperty("mysql.Driver");
url = pro.getProperty("mysql.url");
username = pro.getProperty("mysql.username");
password = pro.getProperty("mysql.password");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}

2.编写用户类 UserDao.java

 package com.ect.dao;

 public class UserDao {
private int id;
private String name; public UserDao() {
super();
} public UserDao(int id, String name) {
super();
this.id = id;
this.name = name;
} @Override
public String toString() {
return "UserDao [id=" + id + ", name=" + name + "]";
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} }

3.编写工具类 JDBCUtil.java

 package com.etc.Util;

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; import com.etc.config.JDBCConfig; public class JDBCUtil { static Connection conn = null;
static PreparedStatement st = null; /**
* 获取连接
*
* @return
*/
public static Connection getConnection() {
try {
// 注册驱动
Class.forName(JDBCConfig.driver);
// 连接数据库,传入库,账号,密码
conn = DriverManager.getConnection(JDBCConfig.url, JDBCConfig.username, JDBCConfig.password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
} /**
* 关闭连接
*
* @param st
*/
public static void close(Connection conn, PreparedStatement st, ResultSet rs) {
closeRs(rs);
closeSt(st);
closeConn(conn);
} public static void closeConn(Connection conn) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} public static void closeSt(PreparedStatement st) { if (st != null) {
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} public static void closeRs(ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
} }
}

4.编写CURD语句 JDBCDml.java

 package com.etc.Util;

 import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; import com.ect.dao.UserDao; public class JDBCDml {
/**
* 查询语句
*
* @param sql
* @return
*/
// 查询语句 因为我们建立的是User表 传出来的值是对象 所以我们用一个集合来存储
public static List<UserDao> select(String sql) {
List<UserDao> list = new ArrayList<>();
Connection conn = null;
PreparedStatement st = null;
ResultSet rs=null;
try {
// 注册驱动与获取连接
conn = JDBCUtil.getConnection();
// 执行语句
st = conn.prepareStatement(sql);
// 结果集
rs = st.executeQuery();
// 获取每一个对象和相对应的值
while (rs.next()) {
int userid = rs.getInt("sid");
String username = rs.getString("name");
// 将值传给ud
UserDao ud = new UserDao(userid, username);
// 添加到集合
list.add(ud);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭连接
JDBCUtil.close(conn,st,rs);
}
return list; } // 传一个对象用此方法
// public static ResultSet insert(UserDao ud) {
/**
* 插入语句
*
* @param sql
* @param pramas
* @return
*/
public static ResultSet insert(String sql, Object... pramas) {
Connection conn = null;
PreparedStatement st = null;
ResultSet rs = null;
try {
conn = JDBCUtil.getConnection();
// 创建语句
st = conn.prepareStatement(sql);
// 设置参数
for (int i = 0; i < pramas.length; i++) {
st.setObject(i + 1, pramas[i]);
}
// 设置参数,这是如果你需要传的是user对象则直接可以用get方法获取其相对应的值
// st.setInt(1,ud.getId());
// st.setString(2,ud.getName());
// 执行语句
st.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭连接
JDBCUtil.close(conn,st,rs);
}
return rs; }
// 传一个对象用此方法
// public static void update(UserDao ud){ /**
* 更新语句
*
* @param sql
* @param pramas
*/
public static void update(String sql, Object... pramas) {
Connection conn = null;
PreparedStatement st = null;
try {
// 注册驱动与获取连接
conn = JDBCUtil.getConnection();
// 执行语句
st = conn.prepareStatement(sql);
// 设置参数
for (int i = 0; i < pramas.length; i++) {
st.setObject(i + 1, pramas[i]);
}
// 设置参数
// st.setString(1,ud.getName());
// st.setInt(2,ud.getId());
st.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭连接
JDBCUtil.closeSt(st);
JDBCUtil.closeConn(conn);
}
} /**
* 删除语句
*
* @param sql
* @param pramas
*/
// public static void delete(UserDao ud) {
public static void delete(String sql, Object... pramas) {
Connection conn = null;
PreparedStatement st = null;
try {
// 注册驱动与获取连接
conn = JDBCUtil.getConnection();
// 执行语句
st = conn.prepareStatement(sql);
// 设置参数
for (int i = 0; i < pramas.length; i++) {
st.setObject(i + 1, pramas[i]);
}
// 设置参数
// st.setInt(1, ud.getId());
st.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭连接
JDBCUtil.closeSt(st);
JDBCUtil.closeConn(conn);
}
}
}

5.编写测试类 JDBCDemo.java

 package com.etc.domain;

 import java.util.List;

 import com.ect.dao.UserDao;
import com.etc.Util.JDBCDml; public class JDBCDemo { public static void main(String[] args) {
//JDBCDml.insert("insert into sanguo (sid,name) values (?,?)","2","adaasd");
//JDBCDml.update("update sanguo set name=(?) where sid=(?)","awerq",2);
//JDBCDml.delete("delete from sanguo where sid=?",2); List<UserDao> list = JDBCDml.select("select * from sanguo");
for (UserDao sanGuo : list) {
System.out.println(sanGuo);
} //User();
} private static void User() {
UserDao ud = new UserDao();
ud.setId(4);
ud.setName("aa5453a"); //JDBCDml.insert(ud);
//JDBCDml.update(ud);
//JDBCDml.delete(ud);
} }

完成。现在只是自己写的连接 一些连接池啊 什么的都没有完成  等以后再更新。

需要把时间字段类型设置为“timestamp”,然后再在默认值中填写“CURRENT_TIMESTAMP”

mysql 第三课 jdbc基础操作的更多相关文章

  1. MySQL入门(1)——基础操作

    MySQL入门(1)--基础操作 创建数据库 创建基本数据库: create database db_admin; 创建基本数据库(等价于CREATE DATABASE): create schema ...

  2. 深入浅出学习Hibernate框架(二):JDBC基础操作

    上篇博客<深入浅出学习Hibernate框架(一):从实例入手初识Hibernate框架>简单介绍了一下Hibernate框架,并且举了一个实例来了解Hibernate.这篇博客将介绍JD ...

  3. mysql更新(三)语句 库的操作 表的操作

    04-初始mysql语句   本节课先对mysql的基本语法初体验. 操作文件夹(库) 增 create database db1 charset utf8; 查 # 查看当前创建的数据库 show ...

  4. mysql第三篇:表操作

    第三篇:表操作 一.什么是表 表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段 二.创建表 语法 CREATE TABLE 表名( 字段名1 类型 ...

  5. 三、Redis基础操作

    前言: Redi是key-value的NoSQL,我们用Redis提供的redis-cli就能操作String类型key和各种数据类型value.但是放入的不是特定类型数据,添加的都是一个一个Stri ...

  6. MySQL 第三篇:表操作

    一 存储引擎介绍 存储引擎即表类型,mysql根据不同的表类型会有不同的处理机制 详见:http://www.cnblogs.com/moyand/p/9020698.html 二 表介绍 表相当于文 ...

  7. 深入学习之mysql(三)单表操作

    1.创建表的结构和数据 CREATE TABLE `t_student`( `id` INT PRIMARY KEY, `stuName` VARCHAR(10) NOT NULL, `age` IN ...

  8. 潭州课堂25班:Ph201805201 MySQL第三课 (课堂笔记)

    单表查询: select * from select sname from stu; 条件查询 select sname from stu where sid=2; select sname from ...

  9. MySQL第三课

    首先创建一个数据库: CREATE DATABASE ku; Query OK, 1 row affected 查看一下是否有此数据库: SHOW DATABASES; +-------------- ...

随机推荐

  1. 【JZOJ3299】【SDOI2013】保护出题人 三分+凸壳

    题面 ​出题人铭铭认为给SDOI2012 出题太可怕了,因为总要被骂,于是他又给SDOI2013 出题了. 参加SDOI2012 的小朋友们释放出大量的僵尸,企图攻击铭铭的家.而你作为SDOI2013 ...

  2. 利用IE浏览器查看元素绑定的JS代码

  3. npm run dev 和 npm run serve

    1.ERR引发的思考 创建好的 vue 项目直接执行 vue run dev 报错?运行 vue run serve 就可以启动...如下 npm run dev npm ERR! missing s ...

  4. PPT转PDF

    需求:可以上传ppt,前台可以预览. 在用程序将ppt转pdf的过程中,遇到几个问题,记录如下: 1.检索 COM 类工厂中 CLSID 为 {91493441-5A91-11CF-8700-00AA ...

  5. jreble for eclipse配置

    1 下载安装jrebel for eclipse  安装方法不再赘述.常规方式Install via Eclipse Marketplace->earch for JRebel 2 安装之后替换 ...

  6. txt改后缀弹窗表白

    one. 打开新建的文本文件,输入字符:msgbox("此处可替换成你想要出现的文字"),括号和引号是英文状态下的标点.(可根据自己的需要输入多行) two. 保存新建的文本文件, ...

  7. Codeforces 432C

    题目链接 题意: 给出一个长度为n(n<=10^5)的数组a,  数组a是数字1到n的一种排列(打乱顺序). 每次可以选择两个数(不同)进行交换, 但是交换的条件是被选择的两个数的下标之差加1应 ...

  8. EasyUI 网格 一主多从 从表使用自定义树状展开

    <table id="Table1" class="easyui-datagrid" title="标题" style="w ...

  9. BZOJ 1008 越狱题解

    其实这题很水,显然n个房间有m种宗教,总共有n^m种情况, 我们再考虑不合法的情况,显然第一个房间有m种情况,而后一种只有m-1种情况(因为不能相同) 所以不合法的情况有(m-1)^(n-1)*m种情 ...

  10. Redis源码解析:05跳跃表

    一:基本概念 跳跃表是一种随机化的数据结构,在查找.插入和删除这些字典操作上,其效率可比拟于平衡二叉树(如红黑树),大多数操作只需要O(log n)平均时间,但它的代码以及原理更简单.跳跃表的定义如下 ...