zoukankan      html  css  js  c++  java
  • 自己写JdbcSqlHelper

    包含了一般操作和存储操作

    package sqlHelper;

    import java.sql.*;
    import java.util.ArrayList;

    public class JdbcSqlHelper {

    private String odbcStr;//Odbc字符串

    //定义odbcStr写入输出
    public String getOdbcStr() {
    return odbcStr;
    }

    public void setOdbcStr(String odbcStr) {
    this.odbcStr = odbcStr;
    }



    private Connection conn=null;//定义连接变量
    private Statement stat=null;//定义Statement 变量


    //定义函数用于连接数据库
    void connSql()
    {
    try {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    try {
    conn=DriverManager.getConnection("jdbc:odbc:"+odbcStr);


    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    } catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    }



    /// <summary>
    /// 关闭数据库连接
    /// </summary>
    void closeSqlconnAndStatement()
    {

    try {
    if(conn.isClosed()==false)
    conn.close();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    try {
    stat.close();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }



    //一般数据操作方法



    /// <summary>
    /// 一般查询函数,返回值ResultSet类型
    /// </summary>
    /// <param name="sqlStr">执行字符串</param>
    public ResultSet selectData(String sqlStr)//查询数据,反回数据表数据
    {
    connSql();


    ResultSet rs = null;
    try {
    if(conn.isClosed()==false){

    stat=conn.createStatement();
    rs=stat.executeQuery(sqlStr);

    }

    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    return rs;


    }
    /// <summary>
    /// 一般插入函数,返回值为影响的行数,调用update_insert_delete_Function函数
    /// </summary>
    /// <param name="sqlStr">执行字符串</param>
    public int insertData(String sqlStr)// 插入数据操作,返回插入行数
    {
    return update_insert_delete_Function(sqlStr);

    }
    /// <summary>
    /// 一般更新函数,返回值为影响的行数,调用update_insert_delete_Function函数
    /// </summary>
    /// <param name="sqlStr">执行字符串</param>
    public int updateDate(String sqlStr)//更新数据操作,返回更新行数
    {
    return update_insert_delete_Function(sqlStr);
    }
    /// <summary>
    /// 一般删除函数,返回值为影响的行数,调用update_insert_delete_Function函数
    /// </summary>
    /// <param name="sqlStr">执行字符串</param>
    public int deleteDate(String sqlStr)//删除数据操作,返回删除行数
    {
    return update_insert_delete_Function(sqlStr);
    }
    /// <summary>
    /// 为一般增删改提供公用方法
    /// </summary>
    /// <param name="sqlStr">执行字符串</param>
    int update_insert_delete_Function(String sqlStr)//更新、插入、删除公用方法
    {
    connSql();
    int i=0;
    try {
    stat=conn.createStatement();
    i=stat.executeUpdate(sqlStr);
    closeSqlconnAndStatement();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return i;
    }

    //.....................................................................................................
    //......................................................................................................
    //........................................................................................................

    //存储过程对数据操作
    CallableStatement cs=null;//定义存储过程的执行字符串连接
    /// <summary>
    /// 关闭数据库连接和执行字符串连接,
    /// 在执行完selectStoreData函数,
    /// 然后调用此函数以断开连接;
    /// </summary>
    public void closeConnAndCallableStatement()
    {
    try {
    cs.close();
    conn.close();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    /// <summary>
    /// 存储查询函数
    /// </summary>
    /// <param name="storeSqlStr">存储过程字符串</param>
    /// <param name="al">存储过程的参数集合</param>

    public ResultSet selectStoreData(String storeSqlStr,ArrayList<Object> al) throws SQLException
    {
    connSql();
    cs=conn.prepareCall(storeSqlStr);
    checkType(al);



    ResultSet rs=cs.executeQuery();
    return rs;





    }

    /// <summary>
    /// 判断参数集合的数据类型
    /// </summary>
    /// <param name="al">存储过程的参数集合</param>
    void checkType(ArrayList<Object> al) throws NumberFormatException, SQLException
    {


    for(int i=0;i<al.size();i++)
    {
    if(al.get(i) instanceof Integer){
    cs.setInt(i+1, Integer.parseInt((String) al.get(i)));
    }
    else if(al.get(i) instanceof String){

    cs.setString(i+1,(String) al.get(i));
    }
    else if(al.get(i) instanceof Float){
    cs.setFloat(i+1, Float.parseFloat((String)al.get(i)));
    }
    else if(al.get(i) instanceof Double){
    cs.setDouble(i+1, Double.parseDouble((String)al.get(i)));
    }
    else if(al.get(i) instanceof Long){
    cs.setLong(i+1, Long.parseLong((String)al.get(i)));
    }
    else if(al.get(i) instanceof Date){
    cs.setDate(i+1, Date.valueOf((String)al.get(i)));
    }
    else if(al.get(i) instanceof Time){
    cs.setTime(i+1, Time.valueOf((String)al.get(i)));
    }
    else if(al.get(i) instanceof Timestamp)
    {
    cs.setTimestamp(i+1, Timestamp.valueOf((String)al.get(i)));
    }
    else
    {
    cs.setObject(i+1, al.get(i));
    }


    }




    }

    /// <summary>
    /// 存储插入函数
    /// </summary>
    /// <param name="storeSqlStr">存储过程字符串</param>
    /// <param name="al">存储过程的参数集合</param>
    public int insertStoreData(String storeSqlStr,ArrayList<Object> al) throws SQLException
    {

    return update_insert_delete_Store_Function(storeSqlStr, al);

    }
    /// <summary>
    /// 存储更新函数
    /// </summary>
    /// <param name="storeSqlStr">存储过程字符串</param>
    /// <param name="al">存储过程的参数集合</param>
    public int updateStoreData(String storeSqlStr,ArrayList<Object> al) throws SQLException
    {

    return update_insert_delete_Store_Function(storeSqlStr, al);

    }
    /// <summary>
    /// 存储删除函数
    /// </summary>
    /// <param name="storeSqlStr">存储过程字符串</param>
    /// <param name="al">存储过程的参数集合</param>
    public int deleteStoreData(String storeSqlStr,ArrayList<Object> al) throws SQLException
    {

    return update_insert_delete_Store_Function(storeSqlStr, al);

    }
    /// <summary>
    /// 更新、插入、删除公用方法
    /// </summary>
    /// <param name="storeSqlStr">存储过程字符串</param>
    /// <param name="al">存储过程的参数集合</param>
    int update_insert_delete_Store_Function(String storeSqlStr,ArrayList<Object> al)
    {
    connSql();
    try {
    cs=conn.prepareCall(storeSqlStr);
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    try {
    checkType(al);//调用判断参数类型
    } catch (NumberFormatException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    int i = 0;
    try {
    i = cs.executeUpdate();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    closeConnAndCallableStatement();//关闭数据库连接
    return i;
    }



    }

  • 相关阅读:
    最大子数组问题
    剑指offer python版 树的子结构
    剑指offer python版 重建二叉树
    剑指offer python版 字符串变成整数
    剑指offer python版 构建乘积数组
    剑指offer python版 不用加减乘除做加法
    剑指offer python版 求1+2+…+n
    剑指offer python版 股票最大收益
    剑指offer python版 圆圈中最后剩下的数字
    剑指offer python版 扑克牌的顺子
  • 原文地址:https://www.cnblogs.com/wangheblog/p/2699210.html
Copyright © 2011-2022 走看看