问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java 封装jdbc preparedstatement 绑定不定参数

发布网友 发布时间:2022-04-30 22:47

我来回答

2个回答

懂视网 时间:2022-05-01 03:08

myjdbc; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.sound.midi.MetaEventListener; import com.mysql.jdbc.Connection; import com.mysql.jdbc.Field; import com.mysql.jdbc.PreparedStatement; import com.mysql.jdbc.ResultSetMetaData; import domain.UserInfo; public class JdbcUtil { //表示数据库的用户名 private final String USERNAME = "root"; //表示数据库的密码 private final String PASSWORD = "hang796413"; //数据库的驱动信息 private final String DRIVER = "com.mysql.jdbc.Driver"; //访问数据库的地址 private final String URL = "jdbc:mysql://localhost:3306/gustomer"; //定义数据库的链接 private Connection connection; //定义sqk语句的执行对象 private java.sql.PreparedStatement pstmt; //定义查询返回的结果集合 private ResultSet resultSet; public JdbcUtil(){ try { Class.forName(DRIVER); System.out.println("注册驱动成功"); connection = (Connection) DriverManager.getConnection(URL,USERNAME,PASSWORD); System.out.println("链接成功"); } catch (Exception e) { } } /*完成对数据库的表的增删改的操作 * * @param sql * @param params * @retuen * @throws SQLException * */ public boolean upderbypaerdstaemnet(String sql, List<Object> params)throws SQLException{ boolean flag = false; int result = -1;//表示当用户执行增删改所影响数据库的行数 pstmt = connection.prepareStatement(sql); int index = 1; if(params != null && !params.isEmpty()){ for(int i = 0; i<params.size();i++){ pstmt.setObject(index++, params.get(i)); } } System.out.println(pstmt.toString()); result = pstmt.executeUpdate(); System.out.println(result); flag = result > 0 ? true : false; return flag; } /*查询返回单条记录 * */ public Map<String,Object> findSimpleResult(String sql, List<Object> params)throws SQLException{ Map<String,Object> map = new HashMap<String,Object>(); //组合SQL语句 pstmt = connection.prepareStatement(sql); int index = 1; if(params != null && !params.isEmpty()){ for(int i = 0; i<params.size();i++){ pstmt.setObject(index++, params.get(i)); } } System.out.println(pstmt.toString()); resultSet = pstmt.executeQuery();//返回查询结果 //获取列的信息 -> metaData ResultSetMetaData metaData = (ResultSetMetaData) resultSet.getMetaData(); int col_len = metaData.getColumnCount();//获得列的名称 System.out.println(col_len); //如果还有其他列 while(resultSet.next()){ for(int i = 0; i<col_len;i++){ //记录 名字和值 System.out.println("11112333332233332"); //i+1!!!!!!!! String cols_name = metaData.getColumnName(i+1); System.out.println(cols_name); Object cols_value =resultSet.getObject(cols_name); if( cols_value == null){ cols_value = " "; } map.put(cols_name, cols_value); } } return map; } /* * 查询返回多行记录 * */ public List<Map<String,Object>> findMoreResult(String sql, List<Object> params)throws SQLException{ List<Map<String,Object>> list = new ArrayList<Map<String,Object>>(); pstmt = connection.prepareStatement(sql); int index = 1; if(params != null && !params.isEmpty()){ for(int i = 0; i<params.size();i++){ pstmt.setObject(index++, params.get(i)); } } System.out.println(pstmt.toString()); resultSet = pstmt.executeQuery();//返回查询结果 //获取列的信息 -> metaData ResultSetMetaData metaData = (ResultSetMetaData) resultSet.getMetaData(); int col_len = metaData.getColumnCount();//获得列的名称 while(resultSet.next()){ //******多了这个地方****/ Map<String,Object> map = new HashMap<String,Object>(); for(int i = 0; i<col_len;i++){ //记录 名字和值 String cols_name = metaData.getColumnName(i+1); Object cols_value =resultSet.getObject(cols_name); if( cols_value == null){ cols_value = " "; } map.put(cols_name, cols_value); } list.add(map); } return list; } //jdbc的封装可以使用反射机制来封装 public <T> T findSimpleRefResult(String sql ,List<Object>params, Class<T> cls)throws SQLException, InstantiationException, IllegalAccessException, NoSuchFieldException, SecurityException { T resultObject = null; int index = 1; pstmt = connection.prepareStatement(sql); if(params != null && !params.isEmpty()){ for(int i = 0; i<params.size();i++){ pstmt.setObject(index++, params.get(i)); } } resultSet = pstmt.executeQuery(); ResultSetMetaData metaData =(ResultSetMetaData) resultSet.getMetaData(); int cols_len = metaData.getColumnCount(); while(resultSet.next()){ //通过反射机制创建实例 resultObject = cls.newInstance(); //初始化 for(int i = 0; i<cols_len;i++){ //记录 名字和值 String cols_name = metaData.getColumnName(i+1); Object cols_value =resultSet.getObject(cols_name); if( cols_value == null){ cols_value = " "; } //获取javabean(UserInfo)对应列的属性 java.lang.reflect.Field field = cls.getDeclaredField(cols_name); //打开javabea的访问私有权限 field.setAccessible(true); //相对应的javabean进行赋值 field.set(resultObject,cols_value); } } return resultObject; } /* * 通过反射机制访问数据库 * */ public <T> List <T> finMoreRefResult(String sql ,List<Object>params, Class<T> cls)throws SQLException, IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException, InstantiationException{ List <T> list = new ArrayList<T>(); int index = 1; pstmt = connection.prepareStatement(sql); if(params != null && !params.isEmpty()){ for(int i = 0; i<params.size();i++){ pstmt.setObject(index++, params.get(i)); } } resultSet = pstmt.executeQuery(); ResultSetMetaData metaData =(ResultSetMetaData) resultSet.getMetaData(); int cols_len = metaData.getColumnCount(); while(resultSet.next()){ //通过反射机制创建实例 T resultObject = cls.newInstance(); //初始化 for(int i = 0; i<cols_len;i++){ //记录 名字和值 String cols_name = metaData.getColumnName(i+1); Object cols_value =resultSet.getObject(cols_name); if( cols_value == null){ cols_value = " "; } //获取javabean(UserInfo)对应列的属性 java.lang.reflect.Field field = cls.getDeclaredField(cols_name); //打开javabea的访问私有权限 field.setAccessible(true); //相对应的javabean进行赋值 field.set(resultObject,cols_value); } list.add(resultObject); } return list; } public void releaseConn(){ if(resultSet != null){ try { resultSet.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(pstmt != null){ try { pstmt.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(connection != null){ try { connection.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public static void main(String[] args){ JdbcUtil jdbcUtil = new JdbcUtil(); // String sql = "insert into userinfo(username,pswd) values(?,?)"; // List<Object> params = new ArrayList<Object>(); // params.add("rose"); // params.add("123"); // try { // boolean flag = jdbcUtil.upderbypaerdstaemnet(sql, params); // System.out.println(flag); // } catch (Exception e) { // } String sql ="select * from userinfo "; //查询单个 //List<Object>params = new ArrayList<Object>(); //params.add(1);//id为1的记录 try { List<UserInfo> list= jdbcUtil.finMoreRefResult(sql,null,UserInfo.class); System.out.println(list); } catch (Exception e) { }finally { jdbcUtil.releaseConn(); } } }
package domain;

import java.io.Serializable;

public class UserInfo implements Serializable {

 /**
 * 
 */
 private static final long serialVersionUID = 1L;
 private int id;
 private String username;
 private String pswd;
 
 public int getId() {
 return id;
 }

 public void setId(int id) {
 this.id = id;
 }

 

 @Override
 public String toString() {
 return "UserInfo [id=" + id + ", username=" + username + ", pswd=" + pswd + "]";
 }

 public String getUsername() {
 return username;
 }

 public void setUsername(String username) {
 this.username = username;
 }

 public String getPswd() {
 return pswd;
 }

 public void setPswd(String pswd) {
 this.pswd = pswd;
 }

 public UserInfo(){
 
 }
}

 

Mysql,JDBC封装

标签:

热心网友 时间:2022-05-01 00:16

//数据库类
public class DB {
private Connection con;

private PreparedStatement pstm;

private String user = "root";

private String password = "xxx";

private String className = "org.gjt.mm.mysql.Driver";

private String url = "jdbc:mysql://localhost:3306/db_dzsw";

public DB()
{
try
{
Class.forName(className);
} catch (ClassNotFoundException e)
{
System.out.println("forname error");
e.printStackTrace();
}
}

public Connection getCon()
{
try
{
con = DriverManager.getConnection(url, user, password);
} catch (SQLException e)
{
System.out.println("connection");
con = null;
e.printStackTrace();
}
return con;
}

public void doPstm(String sql, Object[] params)
{
if (sql != null && !sql.equals(""))
{
if (params == null)
params = new Object[0];

getCon();
if (con != null)
{
try
{
System.out.println(sql);
pstm = con.prepareStatement(sql,
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
for (int i = 0; i < params.length; i++)
{
pstm.setObject(i + 1, params[i]);
}
pstm.execute();
} catch (SQLException e)
{
System.out.println("doPstm()");
e.printStackTrace();
}
}
}
}

public ResultSet getRs() throws SQLException
{
return pstm.getResultSet();
}

public int getCount() throws SQLException
{
return pstm.getUpdateCount();
}

public void closed()
{
try
{
if (pstm != null)
pstm.close();
} catch (SQLException e)
{

e.printStackTrace();
}
try
{
if (con != null)
{
con.close();
}
} catch (SQLException e)
{

e.printStackTrace();
}
}

}
//调用
String sql="select * from k_student where id=?";
Object params[]={id};
DB db=new DB();
db.doPstm(sql, params);
ResultSet rs=db.getRs();
while(rs.next()){
//do something;
}
rs.close();
db.closed();

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
ipad mini2怎么看小说 关于ipadmini的几点疑惑 苹果平板图书阅读软件推荐推荐一个苹果可以用的免费看小说app 风冷无霜为什么噪音大 华为matepad11多大尺寸的 applewatch可以发微信语音吗? 人类基因组组成 仅从染色体照片(黑白非显带的)能否区别X染色体和C组染色体? ...车子加速不上来是什么原因,节气门清洗过了也不行? 换了变数箱油洗了节气门 提速慢了 停下来起步根本没力气 新雳绘图仪驱动? 我想问一下,绘图仪、大幅面打印机、写真机有什么区别? 50岁女同志更年期如何调理 写真机 绘图仪什么区别 HP T1100 44in绘图仪总是提示卡纸,能打印一点点,然后打印机就提示卡纸,检查了一下打印区 50岁,更年期严重怎么办? 台式绘图仪和滚筒绘图仪的特点,急用!!百度上没搜到。。。 更年期综合症是怎么回事? 绘图仪是什么?有什么用? 五十岁上下的更年期妇女,身上为什么会浑身难受? 更年期综合症的症状怎么调理? 更年期综合征的治疗方法有哪些? 怎么设置企业邮箱为默认? 网易《阴阳师》里的式神都有什么典故? 如何解除耳机模式 在澳门买手表会比内地便宜吗? 帝陀男士手表香港比 澳门贵吗? 想买瑞士表,去香港买合适还是去澳门买合适? 卡西欧手表在香港买便宜还是澳门便宜? 打开飞行模式和wifi 别人打电话给你的时候是否能显示来电提醒 深圳市为创科技有限公司怎么样? 深圳市创特优科技有限公司怎么样? 深圳市为创新科技有限公司怎么样? 深圳市优创亿科技有限公司怎么样? 深圳市优创讯科技有限公司怎么样? 深圳市优品源创科技有限公司怎么样? 深圳市创科为科技有限公司怎么样? 深圳市科创优品科技有限公司怎么样? 深圳市极品优创科技有限公司怎么样? 深圳市优动科技有限公司怎么样? 我自己用光影魔术手做出来的电子一寸照片只有100多KB,洗出来能行么? 深圳市上优创新科技有限公司怎么样? 一寸证件照,谁教我用“光影魔术手”啊? 话说PingPong收款,请问靠谱吗? 用数字万用表怎么测量,我想知道这电池伏数毫安大小 深圳市捷美瑞科技有限公司怎么样? 燃气热水器显示风压故障是怎么回事?开机时自检显示E5也就是风压固障不知怎么解决 PingPong收款好用吗,功能多吗?求解答 一寸证件照怎么用光影魔术手调正到300px 深圳市优启创新网络科技有限公司怎么样?