网站个人备案做论坛,建筑网校排名前十的品牌,公司名称大全及寓意,svg wordpress参考链接#xff1a; Java数据库连接JDBC驱动程序
前言#xff1a;今天有朋友问我原生的java连接数据库#xff0c;因为框架的使用#xff0c;如果基础不牢固的人#xff0c;是很容易遗忘原生的连接方式。今天正好趁此做一下回顾#xff1a; 这里只考虑原生方式#x…参考链接 Java数据库连接JDBC驱动程序
前言今天有朋友问我原生的java连接数据库因为框架的使用如果基础不牢固的人是很容易遗忘原生的连接方式。今天正好趁此做一下回顾 这里只考虑原生方式框架就不在这里细说。 一、先大体搞清楚连接时常用元素都是什么作用 在MySQL的官方文档中这样解释说到 java.sql.Driver 它在MySQL Connector / J 中实现的类的名称 是 com.mysql.jdbc.Driver也就是驱动程序。你可以把它理解为发动机没了它其他都没扯。 URL 有了发动机之后你要开始利用它的力量也就是为它指明前进的方向而URL就是它的方向。 值得一提的是目前连接URL的通用格式是这样的 protocol//[hosts][/database][?properties] protocol一种连接协议约定的规则。 hosts主机名通常后跟端口号例如当前主机默认就是localhost:3306当然也可以多主机连接这里暂时不表。 database:数据库嘛 其实应用测试时也就是这样的 jdbc:mysql://localhost:3306/test username 数据库连接的用户名 passowrd 连接密码Connection 与数据库建立连接关系,通常为 DriverManager.getConnectionurl, username, password。这里可以很明显的感觉出来每个元素所产生的作用。Statement / PreparedStatement 需要特别注意的是我们提倡使用后者也就是预编译语句。 PreparedStatement好处 简化Statement中的操作 提高执行语句的性能 可读性和可维护性更好 在代码示例中语法会详细体现。有了PreparedStatement语句之后我们可以采用以下语句进行执行 executeQuery(String) 查询 executeUpdate(String SQL) 更新数据 execute(String SQL) 如果你不知道是查询还是修改可以使用这个语句
二、示例代码及注释 准备 首先要导入mysql-connector-java 的jar包 其次在数据库中准备如下格式的表 之后写基本的连接代码 为了实现代码的重用我对两个基本方法添加和查询进行封装 这是接口User类可自行写入
public interface UserDao { public void add(User user); public User findByUsername(String username);
} 下面是实现类
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import cn.bang.user.domain.User; public class JdbcUserDao implements UserDao { Override public void add(User form) { String driverClassName com.mysql.jdbc.Driver; //启动驱动 String url jdbc:mysql://localhost:3306/test; //设置连接路径 String username root; //数据库用户名 String password 123; //数据库连接密码 Connection con null; //连接 PreparedStatement pstmt null; //使用预编译语句 ResultSet rs null; //获取的结果集 try { Class.forName(driverClassName); //执行驱动 con DriverManager.getConnection(url, username, password); //获取连接 String sql INSERT INTO USER VALUES(?,?,?,?); //设置的预编译语句格式 pstmt con.prepareStatement(sql); pstmt.setString(1, form.getUsername()); pstmt.setString(2, form.getPassword()); pstmt.setInt(3, form.getAge()); pstmt.setString(4, form.getGender()); pstmt.executeUpdate(); } catch (Exception e) { throw new RuntimeException(e); }finally { //关闭资源,倒关 try { if(rs ! null) rs.close(); if(pstmt ! null) pstmt.close(); if(con ! null) con.close(); //必须要关 } catch (Exception e) { } } } Override public User findByUsername(String username) { String driverClassName com.mysql.jdbc.Driver; String url jdbc:mysql://localhost:3306/test; String mysqlusername root; String password 123; Connection con null; PreparedStatement pstmt null; ResultSet rs null; try { Class.forName(driverClassName); con DriverManager.getConnection(url, mysqlusername, password); String sql SELECT * FROM USER WHERE username?; pstmt con.prepareStatement(sql); pstmt.setNString(1, username); rs pstmt.executeQuery(); if(rs null) { return null; } if(rs.next()) { User user new User(); user.setUsername(rs.getString(username)); user.setPassword(rs.getString(password)); user.setAge(rs.getInt(age)); user.setGender(rs.getString(gender)); return user; } else { return null; } } catch (Exception e) { throw new RuntimeException(e); }finally { //关闭资源,倒关 try { if(rs ! null) rs.close(); if(pstmt ! null) pstmt.close(); if(con ! null) con.close(); //必须要关 } catch (Exception e) { } } }
} 开始进行测试
这时候我们去数据库中查看
其中验证码我简单使用的一个类引入的。
资料引导 MySQL官方文档