博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用工具类DbUtils连接数据库,并简单操作数据库
阅读量:7120 次
发布时间:2019-06-28

本文共 3721 字,大约阅读时间需要 12 分钟。

一、文章结构

工具类完整源码

SQL语句编写及操作

标识符的一般命名规范

二、工具类DbUtils

编写工具类的准备工作

  1. 安装mysql数据库,并制作表格;
  2. 在工程目录下新建lib文件夹,导入mysql-connector-java-5.1.37-bin.jar包,右键文件选择Build Path-->add Build Path...
  3. 编写配置文件,放入src目录下
  • 不同的数据库有不同的驱动类及url,命名规范也不相同,需要根据数据库JDBC操作帮助文档编写字符串
  • 配置文件必须是'键=值'对形式,不能有空格和标点符号,严格区分大小写
driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/databaseusername=rootpassword=123复制代码

package cn.edu.nefu.jdbc.dbutils;import java.io.IOException;import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.Properties;public class DbUtils {	private static Connection con;	private static String driver;	private static String url;	private static String username;	private static String password;		static{		try {			readinfo();					//读取配置文件			Class.forName(driver);		//反射的方式注册驱动			con = DriverManager.getConnection(url, username, password);			//获取数据库连接		} catch (Exception e) {			e.printStackTrace();			throw new RuntimeException("数据库连接失败");			//如果数据库连接异常直接终止程序		}	}		//获取连接方法	public static Connection getConnection() {		return con;	}		//释放资源	public static void close(ResultSet rs, Statement ps, Connection con) {		try {			if(rs != null) {				rs.close();				rs = null;			}		} catch (SQLException e) {			e.printStackTrace();		}finally{			try {				if(ps != null){					ps.close();					ps = null;				}			} catch (SQLException e) {				e.printStackTrace();			}finally{				try {					if(con != null) {						con.close();						con = null;					}				} catch (SQLException e) {					e.printStackTrace();				}			}		}	}		//没有结果集释放资源	public static void close(Statement ps, Connection con) {		try {			if(ps != null){				ps.close();				ps = null;			}		} catch (SQLException e) {			e.printStackTrace();		}finally{			try {				if(con != null) {					con.close();					con = null;				}			} catch (SQLException e) {				e.printStackTrace();			}		}	}	//读取配置文件	private static void readinfo() throws IOException {		//获取输入流 配置文件dbutils.properties放在工程src文件夹下		InputStream is = DbUtils.class.getClassLoader().getResourceAsStream("dbutils.properties");		//建立属性集合		Properties pro = new Properties();		//读取属性列表		pro.load(is);		//读取键所对应的值,并赋值		driver = pro.getProperty("driver");		url = pro.getProperty("url");		username = pro.getProperty("username");		password = pro.getProperty("password");		//关闭流		is.close();	}}复制代码

三、测试

package cn.edu.nefu.jdbc.dbtest;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import cn.edu.nefu.jdbc.dbutils.DbUtils;public class DBTest {    public static void main(String[] args) throws SQLException{        //测试        Connection con = DbUtils.getConnection();        //sql语句不区分大小写,但是关键字建议使用大写,便于区分        String sql = "SELECT * FROM students WHERE sid = ?";        //为了防止注入攻击,这里使用预处理集方式        PreparedStatement ps = con.prepareStatement(sql);        ps.setString(1, "002");        ResultSet rs = ps.executeQuery();        while(rs.next()) {            System.out.println(rs.getString("sid") + "   " + rs.getString("sname") + "   " + rs.getString("phoneNum"));        }        DbUtils.close(rs, ps, con);    }}复制代码

四、几点注意事项

  1. 自定义包的命名规范(参考《The Java Language Specification》)
  • 名称都应该以自己的单位或者组织的Internet域名开头,并且定顶级域名放在前面;
  • 用户自定义包的名称决不能以java和javax开头;
  • 包名称的其余部分应该包括一个或者多个描述该包的组成部分,并且简短,单个层级名称通常不超过8个字符;
  • 鼓励使用有意义的缩写形式,例如utils就是utilities的缩写。
  1. 自定义类、接口、枚举、注释的命名规范
  • 每个单词首字母大写;
  • 尽量避免使用缩写,通用的缩写除外;
  • 遇到首字母缩写的情况,建议使用首字母大写而不是全部大写,例如HttpUrl而不是HTTPURL;
  1. 自定义方法和变量的命名规范
  • 首个单词小写,其它单词大写;
  • 如果遇到多个单词首字母缩写的形式,建议都小写;
  • 常量的名称应该所有的单词大写,并且单词之间使用下划线分割;
  • 常量是唯一一个建议使用下划线命名的情形。
  1. 类型参数
  • T 表示任意类型
  • E 表示集合的元素类型
  • K 映射的键类型
  • V 映射的值类型
  • X 表示异常

如果长期养成的习惯用法与此不同,请不要盲目遵从这些命名惯例。

转载于:https://juejin.im/post/5a34e6bff265da43133d381e

你可能感兴趣的文章
使用 IntraWeb (10) - CSS
查看>>
周翔宇_百度百科
查看>>
SVN太旧,要更新问题
查看>>
temp
查看>>
使用 Acegi 保护 Java 应用程序
查看>>
JAVA读、写EXCEL文件
查看>>
WEB控件没有什么所谓好不好,而是用得好不好
查看>>
数缘社区上对libtom的介绍,贴过来先
查看>>
Emacs 的版本控制功能
查看>>
理解Android的手势识别
查看>>
android 渐变展示启动屏
查看>>
教你手工mysql拆库
查看>>
基于html5 localStorage , web SQL, websocket的简单聊天程序
查看>>
cocos2d_android 瞬间动作
查看>>
docker中如何制作自己的基础镜像
查看>>
Android 设置 横屏 竖屏
查看>>
Weblogic魔法堂:AdminServer.lok被锁导致启动、关闭域失败
查看>>
最简单的php导出excel文件方法
查看>>
JAVA classpath jar问题[zz]
查看>>
树莓派(Raspberry Pi)搭建简单的lamp服务
查看>>