20201117_仵岩松
实习内容:1.学习了java的封装操作并利用昨天建立的数据库表格进行了封装
2.改进了原封装程序段,将增删改查四个功能封装在一起,使得调用关键词进行数据库表的增删改查操作更方便
3.在输入信息时,用占位符?来代表即将要输入的信息
4.封装的详细定义是:封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,
封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。
适当的封装可以让程式码更容易理解和维护,也加强了程式码的安全性。
心得体会:为了灵活调用数据,我们可以用下面的程序来进行封装以达到随调随用的目的,有以下四个优点
1.提高代码的安全性
2.提高代码的复用性
3.“高内聚”:封装细节,便于修改内部代码,提高可维护性
4.“低耦合”:简化外部调用,便于调用者使用,便于扩展和写作。
代码如下:分为DBHelper,DBUtils和Text部分
DBHelper:package com.itlaobing.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import org.junit.Test;
public class DBHelper {
public static void main(String[] args) {
DBHelper helper =new DBHelper();
try {
String sql="INSERT INTO cpidatamanagement(location,`date`,goodsname,price,units,goodstype,tips)";
Object []values= {"陕西省","2020/11/17","头孢克圬","30元","盒","药物类","非处方药"};
helper.save(sql,values);
}catch (Exception e) {
e.printStackTrace();
}
}
//定义数据库的添加方法
@Test
public void save(String sql,Object...values) throws Exception {
//1.加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
//2.连接数据库
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/cpi", "root", "");
//3.发送sql语句
PreparedStatement psts = conn.prepareStatement(sql);
//给占位符赋值
for(int i=0;i<values.length;i++) {
psts.setObject(i+1,values[i]);
}
int i = psts.executeUpdate();
if(i > 0) {
System.out.println("添加成功");
}else {
System.out.println("添加失败");
}
psts.close();
conn.close();
}
DBUtils:
package com.itlaobing.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class DBUtils{
Connection conn=null;
PreparedStatement psts=null;
ResultSet rs=null;
//连接数据库
public void getConnection() throws Exception{
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/cpi","root","");
}
//增删改的方法
public int executeUpdate(String sql,Object...values)throws Exception{
getConnection();
psts= conn.prepareStatement(sql);
setObject(values);
int i=psts.executeUpdate();
return i;
}
//查询方法
public ResultSet executeQuery(String sql,Object...values)throws Exception{
getConnection();
psts= conn.prepareStatement(sql);
setObject(values);
ResultSet rs =psts.executeQuery();
return rs;
}
//给占位符赋值
public void setObject(Object...values) throws Exception {
if(values !=null && values.length>0) {
for(int i=0;i<values.length;i++) {
psts.setObject(i+1,values[i]);
}
}
}
//关闭资源
public void close() throws Exception{
if(rs !=null || rs.isClosed()==false){
rs.close();
}
if(psts != null || psts.isClosed()==false) {
psts.close();
}
if(conn != null || conn.isClosed()==false) {
conn.close();
}
}
}
Texts:
package com.itlaobing.jdbc;
import java.sql.ResultSet;
public class Text{
public static void main(String[] args) {
DBUtils utils =new DBUtils;
try {
String sql="SELECT *FROM cpidatamanagement where cpiID=?";
Object[]values= {1};
ResultSet rs =utils.executeQuery(sql, values);
while(rs.next()) {
System.out.println(rs.getObject("goodstype"))
}
}catch(Exception e) {
e.printStackTrace();
}
}
点赞
评论留言