差点就把这个给遗忘掉了。🤦
Java连接数据库是JavaWeb 的入门操作。当然其方式也是非常简单的。
在这里不多做说明,代码里面做了详细介绍。
对于初学者或许会稍微不那么友善。
我的IDE 是idea,习惯搭成maven项目 直接导包的。
如果是Elcipse 的话,不会创建的话,再查查吧,我的代码是没有问题的。呜呜呜。
package jdbc;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class JDBC {
static String url ="jdbc:mysql://localhost:3306/test_1?useUnicode=true&characterEncoding=UTF-8&SSL=false&serverTimezone=UTC";
// 这个数据库的jdbc:mysql:// 是固定的
// localhost 代表本机
// 3306 表示数据库的端口号
// test_1 是连接的数据库名
// useUnicode=true 是否使用Unicode字符集,如果参数characterEncoding设置为gb2312或gbk或utf-8,本参数值必须设置为true
// characterEncoding=UTF-8 字符编码为utf-8
// serverTimezone=UTC 这个是设置时间 UTC: Coordinated Universal Time, 国际协调时间,也称世界标准时间。 mysql
static String userName="root";// 数据库用户名
static String passWord = "123456";// 数据库用户密码
// 获取连接
public static Connection getConnection(){
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver"); // mysql 8的是com.mysql.cj.jdbc.Driver
// 3. 通过驱动程序管理器类获得连接对象
conn = DriverManager.getConnection(url,userName,passWord);
if (conn!=null){
System.out.println("连接成功!");
}else{
System.out.println("连接失败!");
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (SQLException se) {
System.out.println(se.toString());
}
return conn;
}
// 关闭连接、语句及结果集对象
public static void CloseAll(Connection conn , Statement stmt, ResultSet rs){
if (conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt!=null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void test2() {
Connection ct=null;
// 这里是直接获取连接
ct = JDBC.getConnection();
// 用于执行静态SQL语句并返回其产生的结果的对象。
//默认情况下,每个Statement对象只能同时打开一个ResultSet对象。
Statement st=null;
//代表数据库结果集的数据表,通常通过执行查询数据库的语句来生成。
//ResultSet对象维护一个游标,该游标指向其当前数据行。 最初,光标位于第一行之前。
// next方法将光标移动到下一行,并且由于当ResultSet对象中没有更多行时它将返回false ,因此可以在while循环中使用它来迭代结果集。
ResultSet rs=null;
try {
st = ct.createStatement();
String sql="select * from student_1";
rs=st.executeQuery(sql);
System.out.println("| 学号 | 姓名 | 性别 | 年龄 | 籍贯 | 院系 | 更改 | 删除 |");
while(rs.next()){
System.out.print("| "+rs.getString(2));
System.out.print(" | "+rs.getString(3));
System.out.print(" | "+rs.getString(4));
System.out.print(" | "+rs.getString(5));
System.out.print(" | "+rs.getString(6));
System.out.print(" | "+rs.getString(7)+"|");
System.out.println("");
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBC.CloseAll(ct,st,rs);
}
}
public static void test3() {
Connection connection = JDBC.getConnection();
// 表示预编译的SQL语句的对象。
//SQL语句已预编译并存储在PreparedStatement对象中。 然后可以使用该对象多次有效地执行该语句。
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = connection.prepareStatement("SELECT * FROM student_1 where id=?");
ps.setInt(1, 20190102);
rs = ps.executeQuery();
System.out.println("| 学号 | 姓名 | 性别 | 年龄 | 籍贯 | 院系 | 更改 | 删除 |");
while (rs.next()) {
System.out.print("| "+rs.getString(2));
System.out.print(" | "+rs.getString(3));
System.out.print(" | "+rs.getString(4));
System.out.print(" | "+rs.getString(5));
System.out.print(" | "+rs.getString(6));
System.out.print(" | "+rs.getString(7)+"|");
System.out.println("");
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBC.CloseAll(connection, ps, rs);
}
}
public static void main(String[] args) {
// getConnection();
// test2();
test3();
}
}
摸鱼又划水的一篇博客。🤦
都不好意思讲,我写过Java连接数据库的博客啦。