关于Java的sql动态参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Java的sql动态参数相关的知识,希望对你有一定的参考价值。

在C#的方法中可以使用params Parameter[] values来动态获取sql语句中的参数值数组。
Java中是否也有类似的方法呢?
用PreparedStatement吗,但是如果参数有int、String、或者其他类型混杂在一起该怎么办呢?而且我说的通过方法来传递参数。
应该怎么做呢?

参考技术A String sql = "select * from stuInfo where id = ? and name = ?";
Object[] params = id,name;
public int executeSQL(String sql,Object[] params)
PreparedStatement psmt =conn.prepareStatement(sql);
if(params != null)
for(int i = 0 ;i<params.length;i++)
psmt.setObject((i+1),params[i]);



本回答被提问者采纳
参考技术B st=conn.PreparedStatement("insert into DailyCoal VALUES(?,?,?)");
st.setString(1,dat);
st.setString(2,name);
st.setString(3,num);

这样动态传参
参考技术C 学习 参考技术D 你用list集合来获取.

Java的sql动态参数

在C#的方法中可以使用params Parameter[] values来动态获取sql语句中的参数值数组。
Java中可以自己封装出一个类似于C#的方法

1、获取结果集

 1     /**
 2      *  获取结果集
 3      * @param sql SQL语句
 4      * @param params SQL语句数据数组
 5      * @return 结果集
 6      */
 7     public static ResultSet getResultSet(String sql,Object[] params) {
 8         ResultSet rs=null;
 9         //从DButil获取连接对象
10         Connection conn=getConnection();
11         try {
12             //获取PreparedStatement对象
13             PreparedStatement ps= conn.prepareStatement(sql);
14             //循环遍历数据数组
15             for(int i=0;i<params.length;i++) {
16                 ps.setObject(i+1, params[i]);
17             }
18             //返回结果集
19             rs=ps.executeQuery();
20         } catch (SQLException e) {
21             // TODO Auto-generated catch block
22             System.out.println(e.getMessage());
23             return rs;
24         }
25         return rs;
26     }

2、执行增删改

 1 /**
 2      * 执行数据库增删改语句
 3      * @param sql 数据库执行语句
 4      * @param params SQL语句数据数组
 5      * @return 受影响行的数量
 6      */
 7     public static int getUpdate(String sql,Object[] params) {
 8         int n=0;
 9         //从DButil获取连接对象
10         Connection conn=getConnection();
11         PreparedStatement ps=null;
12         try {
13             //获取PreparedStatement对象
14              ps= conn.prepareStatement(sql);
15             //循环遍历数据数组
16             for(int i=0;i<params.length;i++) {
17                 ps.setObject(i+1, params[i]);
18             }
19             n=ps.executeUpdate();
20         } catch (SQLException e) {
21             // TODO Auto-generated catch block
22             e.printStackTrace();
23         }
24         return n;
25     } 

 


以上是关于关于Java的sql动态参数的主要内容,如果未能解决你的问题,请参考以下文章

请教关于Spring Data JPA动态查询参数的问题

java调用oracle存储过程 关于sql里面in函数参数的问题

JAVA中,关于可变参数和泛型的问题。

关于java中的toArray()方法动态数组的运用???????

关于java中动态数组的toArray()方法的运用????

关于java动态加载jar的问题?