首先要在scr下创建一个file文件

当然 需要初始的注册驱动和数据库操作都可以实现,才可以用jdbc工具类进行减多少代码冗余~可以看前面一篇的博客,就是写如何连接jdbc哈~代码运行成功的快乐真的好快乐呀~

url=jdbc:mysql:///mysql
user=root
password=root
driver=com.mysql.jdbc.Driver

在项目包下创建一个util包

创建JDBCutil的类,当然我用的是Utils只是名字不一样

package cn.it.uti;

import java.io.FileReader;
import java.io.FilterReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;
/*
获取连接:因为不想传递参数(麻烦——还得保证工具的通用,所以用配置文件
配置文件:
jdbc.properties,url,user,password
文件的读取只需要一次就可以读取一次,而我们可以用静态代码块
连接对象 return
*/ public class Utils {
private static String url;
private static String user;
private static String password;
//因为只有static才可以被静态类调用
private static String driver;//注册驱动用的 static {
try {
// 1 集合类
Properties pro = new Properties();
// 2.加载文件
//这里可以写绝对路径 也可以用获取src的下文件的方法 Classloader
ClassLoader classLoader = Utils.class.getClassLoader();
URL res = classLoader.getResource("jdbc.properties");//统一资源标识符
String path = res.getPath();
System.out.println(path); // pro.load(new FileReader("D:\\JAVAproject\\Javaprj\\src\\jdbc.properties"));
pro.load(new FileReader(path));
// 3.获取数据,赋值
Utils.url = pro.getProperty("url");
user = pro.getProperty("user");
password = pro.getProperty("password");
driver = pro.getProperty("driver");
// 4.注册驱动用的
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} } catch (IOException e) {
e.printStackTrace();
}finally { } } public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url, user,password); }
/*
因为1、增删改是释放stsm和conn对象
2、查是释放rs、stmt、conn
*/
public static void close(Statement stmt, Connection coon, ResultSet rs){
//要catch两次 因为会有出现资源浪费的情况
if (rs != null){
try {
rs.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (stmt != null){
try {
stmt.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (coon != null){
try {
coon.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
}

最后的demo文件

package cn.it.com;

import java.sql.*;

public class JdbcFind {
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql", "root", "root");
String sql = "SELECT * FROM db1";//直接从可视化复制过来比较正确
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
System.out.println(rs); while (rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
Time time = rs.getTime("time");
System.out.println(id+" "+name+" "+age+" "+time);
}
rs.close();
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} }
}

demo

package cn.it.com;
import cn.it.uti.Utils;
import java.sql.*;
import java.util.Scanner; public class JDBCdemoResign {
public static void main(String[] args){
//键盘录入
Scanner sc = new Scanner(System.in);
System.out.println("USERNAME:");
String username = sc.nextLine();
System.out.println("PASSWORD:");
String password = sc.nextLine();
//调用方法
boolean flag = new JDBCdemoResign().login(username, password);
//判断结果,输出不同语句
if (flag) {
System.out.println("seccess");
} else {
System.out.println("false");
}
} public boolean login(String username, String password) {
if (username == null || password == null) {
return false;
}
Connection conn = null;
PreparedStatement ptmt = null;
ResultSet rs = null;
try {
String sql = "select *from db1 where name = ? and password = ?";
conn = Utils.getConnection();
ptmt = conn.prepareStatement(sql);
ptmt.setString(1,username);
ptmt.setString(2,password);
rs = ptmt.executeQuery();
System.out.println(sql);
//空参不传参
return rs.next();
} catch(SQLException throwables) {
throwables.printStackTrace();
} finally {
Utils.close(ptmt, conn, rs);
}
return false;
} }

最新文章

  1. linux网络环境下socket套接字编程(UDP文件传输)
  2. TYVJ P1026 犁田机器人 Label:水
  3. delphi android 录像(调用Java的功能)
  4. Create Stacked Canvas to Scroll Horizontal Tabular Data Blocks In Oracle Forms
  5. curl用法
  6. mysql读写分离
  7. Appium python自动化测试系列之等待函数如何进行实战(九)
  8. 機器學習基石 (Machine Learning Foundations) 作业1 Q15-17的C++实现
  9. Lnmp下pureftpd新建FTP账户权限不足解决方法
  10. 基于【CentOS-7+ Ambari 2.7.0 + HDP 3.0】搭建HAWQ数据仓库04 —— 安装HAWQ插件PXF3.3.0.0
  11. openstack--9--深入理解虚拟机
  12. 何为TLC、MLC、SLC?【转】
  13. python slave status 2
  14. system.Data.Entity.Infrastructure.DbUpdateConcurrencyException: Store update, insert, or delete statement affected an unexpected number of rows (0) 问题
  15. 【Html】Clipboard.js 实现点击复制,剪切板操作
  16. 009-spring cloud gateway-过滤器GatewayFilter、GlobalFilter、GatewayFilterChain、作用、生命周期、GatewayFilterFactory内置过滤器
  17. js 在IOS系统微信浏览器内如何动态给title赋值
  18. [UE4]混合动画以及Try Get Pawn Owner、Get Velocity、VectorLength的使用
  19. _tcschr和_tcsrchr使用
  20. linux文件系统初始化过程(6)---执行init程序

热门文章

  1. 禁用显卡自动更新(解决官办驱动和OEM驱动相冲)
  2. 【DL论文精读笔记】 深度压缩
  3. C++期末考试题库
  4. ArcEngine要素编辑遇到的一些问题
  5. JUC源码学习笔记6——ReentrantReadWriteLock
  6. vscode+springboot+gradle
  7. 数据结构高阶--AVL(平衡二叉树)(图解+实现)
  8. 【Zookeeper】结构、应用、安装部署与参数、客户端命令行操作、API应用、内部原理(选举机制、写数据、监听器)
  9. mysql数据库(字段约束条件)
  10. week_Last