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. 第一周<导学>

    导学 欧氏距离 平方 曼哈顿距离 一次方 马氏距离 协方差(先标准化再计算距离)\(d(x_{i},x_{j})=\sqrt{(x_{i}-x_{j})^{T}s^{-1}(x_{i}-x{j})}\ ...

  2. Leetcode883.Projection Area of 3D Shapes三维形体投影面积

    在 N * N 的网格中,我们放置了一些与 x,y,z 三轴对齐的 1 * 1 * 1 立方体. 每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上. 现在,我们查 ...

  3. 深入浅出Cocoa 之动态创建类【转】

    在前文<深入浅出Cocoa之类与对象>一文中,我已经详细介绍了ObjC中的 Class 与 Object 的概念,今天我们来如何在运行 时动态创建类.下面这个函数就是应用前面讲到的Clas ...

  4. 自己动手写js分享插件 [支持https] (QQ空间,微信,新浪微博。。。)

    转载:https://blog.csdn.net/libin_1/article/details/52424340 废话不多说,传送门:http://download.csdn.net/detail/ ...

  5. 将centos 7 自带的 php 5.4升级为 5.6

    1.进入终端后查看php版本 php -v 输出可能如下: PHP 5.4.35 (cli) (built: Nov 14 2014 07:04:10) Copyright (c) 1997-2014 ...

  6. oracle管理索引

    索引是用于加速数据存取的数据对象,合理的使用索引可以大大降低I/O次数,从而提高数据访问性能.索引有很多种我们主要介绍常用的几种: 为什么添加了索引或,会加快查询速度呢? n  单列索引 单列索引是基 ...

  7. 【JZOJ4845】【NOIP2016提高A组集训第5场11.2】寻找

    题目描述 "我有个愿望,我希望穿越一切找到你." 这是个二维平面世界,平面上有n个特殊的果实,我从(0,0)点出发,希望得到尽量多的果实,但是出于某种特殊的原因,我的运动方式只有三 ...

  8. jQuery $.isNumeric vs. $.isNaN vs. isNaN

    在jQuery中,有几种方式可以判断一个对象是否是数字,或者可否转换为数字. 首先,jQuery.isNaN()在最新版本中已经被移除了(1.7之后),取而代之的是  jQuery.isNumeric ...

  9. python 六种典型的异常

  10. 【NS2】NS2机制浅显分析一下(转载)

    [我在之前看的是以ping协议为实例来理解TclCL机制和分裂对象模型] 本文以channel实例的创建过程为例,试图说明ns2的分裂机制,请在阅读本文前阅读<The NS Manual> ...