java版本的sqlHelper

以下版本的sqlHelper可以支持普通的DDL,DML和查询语句,暂不支持存储过程,事务等

package com.bobo.util;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import com.mysql.jdbc.Connection;
import java.sql.*;

public class SqlHelper {
    // 回头想办法,不要在这里硬编码
    private static String driverName = "com.mysql.jdbc.Driver";
    private static String urlName = "jdbc:mysql://127.0.0.1:3306/bobo_test";
    private static String user = "root";
    private static String password = "bobo";

    // 该类禁止实例化
    private SqlHelper() {

    }

    private static java.sql.Connection getConnection() {
        try {
            Class.forName(driverName);
            return DriverManager.getConnection(urlName, user, password);
        } catch (Exception e) {
            // TODO Auto-generated catch block

            return null;
        }

    }

    private static void prepareCommand(PreparedStatement pstmt, String[] parms) {
        try {
            if (parms != null) {
                for (int i = 0; i < parms.length; i++) {
                    try {
                        pstmt.setDate(i + 1, java.sql.Date.valueOf(parms[i]));
                    } catch (Exception e) {
                        try {
                            pstmt.setDouble(i + 1, Double.parseDouble(parms[i]));
                        } catch (Exception e1) {
                            try {
                                pstmt.setInt(i + 1, Integer.parseInt(parms[i]));
                            } catch (Exception e2) {
                                try {
                                    pstmt.setString(i + 1, parms[i]);
                                } catch (Exception e3) {
                                    System.out
                                            .print("SQLHelper-PrepareCommand Err1:"
                                                    + e3);
                                }
                            }
                        }
                    }
                }
            }
        } catch (Exception e1) {
            System.out.print("SQLHelper-PrepareCommand Err2:" + e1);
        }
    }

    /**
     * 用于执行语句(insert,update,delete)
     *
     * @param sqlText
     *            sql语句
     * @param params
     *            参数集合
     * @return int,sql语句受影响的行数
     * @throws Exception
     */
    public static int ExecuteNonQuery(String sqlText, String[] params)
            throws Exception {
        PreparedStatement ps = null;
        java.sql.Connection con = null;
        try {
            con = getConnection();
            ps = con.prepareStatement(sqlText);
            prepareCommand(ps, params);
            return ps.executeUpdate();
        } catch (Exception e) {
            throw new Exception("executeNonQuery方法出错:" + e.getMessage());
        }
    }

    /**
     * 用于获取结果集语句(eg:selete * from table)
     *
     * @param cmdtext
     *            sql语句
     * @param parms
     * @return ArrayList 里面的每一个元素是一个object[列数]的数组
     * @throws Exception
     */
    public static ArrayList ExecuteReader(String cmdtext, String[] parms)
            throws Exception {
        PreparedStatement pstmt = null;
        java.sql.Connection conn = null;

        try {
            conn = getConnection();

            pstmt = conn.prepareStatement(cmdtext);

            prepareCommand(pstmt, parms);
            ResultSet rs = pstmt.executeQuery();

            ArrayList al = new ArrayList();
            ResultSetMetaData rsmd = rs.getMetaData();
            int column = rsmd.getColumnCount();

            while (rs.next()) {
                Object[] ob = new Object[column];
                for (int i = 1; i <= column; i++) {
                    ob[i - 1] = rs.getObject(i);
                }
                al.add(ob);
            }

            rs.close();
            return al;

        } catch (Exception e) {
            throw new Exception("executeSqlResultSet方法出错:" + e.getMessage());
        } finally {
            try {
                if (pstmt != null)
                    pstmt.close();
                if (conn != null)
                    conn.close();
            } catch (Exception e) {
                throw new Exception("executeSqlResultSet方法出错:" + e.getMessage());
            }
        }
    }

    /**
     * 用于获取单字段值语句(用名字指定字段)
     *
     * @param cmdtext
     *            SQL语句
     * @param name
     *            列名
     * @param parms
     *            OracleParameter[]
     * @return Object 返回object类型的数据
     * @throws Exception
     */
    public static Object ExecuteScalar(String cmdtext, String name,
            String[] parms) throws Exception {
        PreparedStatement pstmt = null;
        java.sql.Connection conn = null;
        ResultSet rs = null;

        try {
            conn = getConnection();

            pstmt = conn.prepareStatement(cmdtext);
            prepareCommand(pstmt, parms);

            rs = pstmt.executeQuery();
            if (rs.next()) {
                return rs.getObject(name);
            } else {
                return null;
            }
        } catch (Exception e) {
            throw new Exception("executeSqlObject方法出错:" + e.getMessage());
        } finally {
            try {
                if (rs != null)
                    rs.close();
                if (pstmt != null)
                    pstmt.close();
                if (conn != null)
                    conn.close();
            } catch (Exception e) {
                throw new Exception("executeSqlObject方法出错:" + e.getMessage());
            }
        }
    }

    /**
     * 用于获取单字段值语句(用序号指定字段)
     *
     * @param cmdtext
     *            SQL语句
     * @param index
     *            列名索引
     * @param parms
     *            OracleParameter[]
     * @return Object
     * @throws Exception
     */
    public static Object ExecuteScalar(String cmdtext, int index, String[] parms)
            throws Exception {
        PreparedStatement pstmt = null;
        java.sql.Connection conn = null;
        ResultSet rs = null;

        try {
            conn = getConnection();

            pstmt = conn.prepareStatement(cmdtext);
            prepareCommand(pstmt, parms);

            rs = pstmt.executeQuery();
            if (rs.next()) {
                return rs.getObject(index);
            } else {
                return null;
            }
        } catch (Exception e) {
            throw new Exception("executeSqlObject方法出错:" + e.getMessage());
        } finally {
            try {
                if (rs != null)
                    rs.close();
                if (pstmt != null)
                    pstmt.close();
                if (conn != null)
                    conn.close();
            } catch (Exception e) {
                throw new Exception("executeSqlObject方法出错:" + e.getMessage());
            }
        }
    }

}
时间: 2024-11-06 15:49:27

java版本的sqlHelper的相关文章

JAVA 版本微信公众账号开源项目招募新成员

大家好: jeecg开源社区,目前正在开展"JAVA 版本微信公众账号开源项目"的开发工作,欢迎有兴趣的朋友一起参与! 截止时间:20140510 详细联系方式:445654970 要求: 1.熟悉jeecg技术平台: 2.有足够的业余时间参与: 官方网站:http://www.jeecg.org/ JAVA 版本微信公众账号开源项目招募新成员,布布扣,bubuko.com

Java版本

Java版本分为J2SE(Java 2 Standard Edition,Java标准版).J2ME(Java 2 Micro Edition,Java微型版本)和J2EE(Java 2 Enterprise Edition,Java企业版)三个体系. JavaSE就是指Java的基础语法和一些Java平台提供的基础类库.而后面两者可以看作是前者的基础上添加一些针对某个领域的类库和框架.并不是说有好几个语法版本的Java.开发时除了安装标准版的Java后两者还需要其它的扩展工具. JavaME是

libsvm java版本使用心得(转)

http://blog.csdn.net/u010340854/article/details/19159883 https://github.com/cjlin1/libsvm 项目中要用到svm分类器,自己实现的话太费时间,于是寻找开源实现,找到了libsvm. Java版本是一个jar包,引入到工程中即可使用. 需要注意的是,java版本充满了c++风格(类名小写,命名使用下划线_分隔等等),使用者需要稍微适应一下. 核心类是svm类,最常用的几个方法如下(都是static方法): svm

修改mac中mvn 的 java 版本

在mac 中可以使用jenv 管理 jdk 的多个版本. 但是,jenv 不能管理mvn的java 版本. 方法是:创建一个mvn的脚本 add the following to your ~/.mavenrc: 1. vi ~/.mavenrc 2. add the following sentence in the ~/.mavenrc file. export JAVA_HOME=/Library/Java/JavaVirtualMachines/{jdk-version}/Content

centos 7 java版本切换

有一个项目需要java 1.7配合,原服务器上已安装java 1.8,需要切换版本到java 1.7. 查看centos7支持的java版本 yum search java|grep java-1 java-1.6.0-openjdk.x86_64 : OpenJDK Runtime Environment java-1.6.0-openjdk-demo.x86_64 : OpenJDK Demos java-1.6.0-openjdk-devel.x86_64 : OpenJDK Develo

复利计算5.0(改成Java版本)与 单元测试

//由于C语言版本不方便单元测试,所以改成了java版本,部分代码如下:import java.util.Scanner; public class FuLi{ public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("\n复利计算按 1\n单利计算按 2\n计算筹集的养老金按 3\n计算时间按 4\n计算您要的利率按 5\n计算本利和投资按 6\n计算

Atitit. 图像处理jpg图片的压缩 清理垃圾图片 java版本

Atitit. 图像处理jpg图片的压缩  清理垃圾图片 java版本 1. 清理图片压缩图片尺寸 1 2. 所以要使用ImageWriter 1 3. Thumbnails质量压缩builder.outputQuality(0.9); 2 4. attilax框架的处理 code 2 5. 到一篇文章提到如何控制jpg图片后压缩的质量 3 6. 参考 4 1. 清理图片压缩图片尺寸 目标::300kb>>>10kb.. 处理流程:::scale,outputQuality(0.5) 裁

权重轮询调度算法 java版本

权重轮询调度算法(Weighted Round-Robin Scheduling)--java版本 由于每台服务器的配置.安装的业务应用等不同,其处理能力会不一样.所以,我们根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求. 2个java源文件,如下所示: public interface IProduceStrategy { public int getPartitionIdForTopic(); } public class WeightFactorPr

mac 上使用jenv 管理的多个java 版本

由于服务器是java1.7, mac上是1.8,因此mac编译的java代码会在服务器上报错.因此,需要修改mac上java版本,自己折腾了很久,放弃,决定使用jenv 管理! 结果是非常方便 使用步骤: 1.安装 jenv 2.安装各个版本的java 3.设置java路径 4.关闭控制台,重新打开(restart a new console after adding configuring the jenv) 5. jenv local ***** (记住这个命令,经常使用.前面的步骤都是一劳