- 连接数据库
数据库类:建立了com.zyrx包,里面有包含了数据库的注册驱动创建类,sql语句等。并通过另一个专门进行游戏的包通过Test类来引入com.zyrx进行对数据库的增,改,查操作。提供了容错性,并对代码的严谨性进行了考虑。
package com.zyrx;
import com.zyrx.Player;
/**
* 主要需要四个参数,一个驱动信息参数,三个数据库入口参数
driver:驱动信息
url:数据库连接参数
user:用户名
password:密码
*/
import java.sql.*;
public class JDBCUtils {
//声明JDBC参数
String driver="com.mysql.jdbc.Driver";
String url="jdbc:mysql://localhost:3306/Player?characterEncoding=utf-8";
String username="root";
String password="password";
String sql="";
/**第一步,加载数据库驱动**/
//Connection接口代表着与数据库的链接
Connection conn=null;//创建一个Connection对象
//为了执行 Statement 对象,被发送到数据库的 SQL 语句将被作为参数提供给 Statement
Statement statement=null;
public JDBCUtils(String sql) {
try {
Class.forName(driver);
/**第二步,获取数据库连接对象**/
//通过访问数据库URL地址获取数据库连接对象
conn = (Connection) DriverManager.getConnection(url, username, password);
/**第三步,通过Connection接口的对象,创建出Statement的对象,然后可以用它编译和发送sql命令给数据库**/
statement = (Statement) conn.createStatement();
/**第四步,创建sql命令**/
this.sql = sql;
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 添加数据
*/
//Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate
//和 execute。使用哪一个方法由 SQL 语句所产生的内容决定
public void insert(){
try {
/**第五步,执行指定sql命令,成功返回执行了sql命令改变数据库数据的次数,没有成功返回-1**/
statement.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 根据id查询
*/
// ResultSet集合的主要功能使用来存储查询语句返回的结果集,
public Player selectById(){
Player Player=new Player();
ResultSet rs=null;//保存需要的结果集
try {
rs = statement.executeQuery(sql);
while(rs.next()){
Player.setId(rs.getString(1));
Player.setUname(rs.getString(2));
Player.setTel(rs.getString(3));
}
} catch (SQLException e) {
e.printStackTrace();
}
finally {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return Player;
}
/**
* 关闭连接
*/
public void close(){
try {
this.statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
this.conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}