1.连接数据库基本参数
将参数设定为静态私有属性,防止外部直接访问和修改该属性,并初始化连接对象connection,预编译sql语句对象PreparedStatement,结果集对象ResultSet。
private static String DRIVER = "oracle.jdbc.OracleDriver";//驱动文件
private static String URL = "jdbc:oracle:thin:@localhost:1521:orcl";//数据库访问地址
private static String USER = "***";//数据库账号
private static String PASS = "l***";//数据库密码
//数据库连接
Connection connection =null;
//预编译对象
PreparedStatement p = null;
//结果集
ResultSet rSet = null;
2.数据库基本操作方法
增、删、改模板:
步骤一:获取连接
getCoonnection();
步骤二:预编译sql语句:
pstm = connection.prepareStatement(sql);其中sql执行条件用占位符?表示。
步骤三:传入占位符数据:
p.setInt(1, idNumber); p.setString(2, username);
步骤四:更新数据库表数据:
p.executeUpdate();
查询模板:
步骤一:获取连接
getCoonnection();
步骤二:预编译sql语句:
pstm = connection.prepareStatement(sql);
步骤三:更新结果集:
rSet = p.executeQuery();
步骤四:判断结果集是否存在数据库,并输出查询结果:
while(rset.next()){
System.out.println(" id:"+rSet.getString("id")+"
username:"+rSet.getString("username")+"
pass:"+rSet.getString("password"));
}
实例操作:
获取数据库连接
//获取数据库连接,返回连接
public Connection getConnection() {
try {
//加载驱动
Class.forName(DRIVER);
//获取数据库连接
connection = DriverManager.getConnection(URL, USER, PASS);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
return connection;
}
添加数据到数据库
//增加数据,若数据库设定为id自增,则无需加入 idNumber这一参数(id),每一参数对应数据表(userinfo)中的字段。
public void add(int idNumber,String username,String pass) {
//获取连接
connection = getConnection();
//编辑执行的sql语句,?代表占位符,防止SQL注入
String str = "insert into userinfo values(?,?,?)";
try {
//预编译执行插入语句
p = connection.prepareStatement(str);
//设定占位符对应的参数,序号对应?的占位符
p.setInt(1, idNumber);
p.setString(2, username);
p.setString(3, pass);
//更新数据库表数据
p.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
删除数据
public void delete(String name) {
//获取连接
connection = getConnection();
//sql语句
String sql = "delete from userinfo where username=?";
try {
//预编译
p = connection.prepareStatement(sql);
//设定占位符数据
p.setString(1, name);
//更新数据库数据
p.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
修改数据【注释同上】
public void updateData(String user,String pass) {
connection = getConnection();
String str = "update userinfo set password=? where username=?";
try {
p = connection.prepareStatement(str);
p.setString(1, pass);
p.setString(2, user);
p.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
查询数据
public void selectData() {
//获取连接
connection = getConnection();
//sql查询语句
String sql = "select * from userinfo";
try {
//预编译
p = connection.prepareStatement(sql);
//更新查询到的结果集
rSet = p.executeQuery();
while(rSet.next()) {
//输出查询结果集
System.out.println(" id:"+rSet.getString("id")+" username:"+rSet.getString("username")+" pass:"+rSet.getString("password"));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
3.释放资源
释放顺序:结果集-----预编译对象-----数据库连接。在每个方法执行finally中释放资源。
public void ReleaseResource() {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (pstm != null) {
try {
pstm.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}