SqlHelper类(BY_韩顺平)

package com.xlc.utils;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Properties;

import java.sql.*;

public class SqlHelper

{

//定义变量

private static Connection ct = null;

//大多数情况下用preparedstatement替代statement

private static PreparedStatement ps = null;

private static ArrayList rs = null;

//连接数据库的参数

private static String url = "";

private static String username = "";

private static String driver = "";

private static String passwd = "";

private static CallableStatement cs = null;

public static CallableStatement getCs()

{

return cs;

}

private static Properties  pp = null;

private static InputStream fis = null;

//加载驱动,只需要一次,用静态代码块

static

{

try

{

//从dbinfo.properties

pp = new Properties();

fis=SqlHelper.class.getClassLoader().getResourceAsStream("dbinfo.properties");

//fis = new FileInputStream();

pp.load(fis);

url = pp.getProperty("url");

username = pp.getProperty("username");

driver = pp.getProperty("driver");

passwd = pp.getProperty("passwd");

Class.forName(driver);

}

catch (Exception e)

{

e.printStackTrace();

}

finally

{

try

{ fis.close();}

catch(IOException e) {e.printStackTrace();}

fis = null;//垃圾回收站上收拾

}

}

//得到连接

public static Connection getConnection()

{

try

{ct = DriverManager.getConnection(url,username,passwd);}

catch(Exception e) {e.printStackTrace();}

return ct;

}

//*************callPro1存储过程函数1*************

public static CallableStatement callPro1(String sql,String[] parameters)

{

try{

ct = getConnection();

cs = ct.prepareCall(sql);

if(parameters!=null){

for(int i=0;i<parameters.length;i++){

cs.setObject(i+1,parameters[i]);

}

}

cs.execute();

}

catch(Exception e) { e.printStackTrace(); throw new RuntimeException(e.getMessage());}

finally

{ close(rs,cs,ct);}

return cs;

}

//*******************callpro2存储过程2************************

public static CallableStatement callPro2(String sql,String[] inparameters,

Integer[] outparameters)

{

try

{

ct = getConnection();

cs = ct.prepareCall(sql);

if(inparameters!=null)

{

for(int i=0;i<inparameters.length;i++)

{

cs.setObject(i+1,inparameters[i]);

}

}

//cs.registerOutparameter(2,oracle.jdbc.OracleTypes.CURSOR);

if(outparameters!=null)

{

for(int i=0;i<outparameters.length;i++)

{

cs.registerOutParameter(inparameters.length+1+i,outparameters[i]);

}

}

cs.execute();

}

catch(Exception e) {

e.printStackTrace(); throw new RuntimeException(e.getMessage());

}

finally

{

}

return cs;

}

public static ArrayList executeQuery(String sql,String[] parameters)

{

try

{

ct=getConnection();

ps=ct.prepareStatement(sql);

if(parameters!=null)

{

for(int i=0;i<parameters.length;i++)

{

ps.setString(i+1,parameters[i]);

}

}

rs = ps.executeQuery();

}

catch(Exception e)

{

e.printStackTrace();

throw new RuntimeException(e.getMessage());

}

finally

{

}

return rs;

}

public static Connection getCt()

{

return ct;

}

public static PreparedStatement getPs()

{

return ps;

}

public static ResultSet getRs()

{

return rs;

}

public static void executeUpdate2(String[] sql,String[][] parameters)

{

try

{

ct = getConnection();

ct.setAutoCommit(false);

for(int i=0;i<sql.length;i++)

{

if(null!=parameters[i])

{

ps = ct.prepareStatement(sql[i]);

for(int j=0;j<parameters[i].length;j++)

{

ps.setString(j+1,parameters[i][j]);

}

ps.executeUpdate();

}

}

ct.commit();

}catch (Exception e)

{

e.printStackTrace();

try

{

ct.rollback();

}

catch (SQLException e1)

{

e1.printStackTrace();

}

throw  new RuntimeException(e.getMessage());

}finally

{

close(rs,ps,ct);

}

}

//先写一个update、delete、insert

//sql格式:update 表名 set 字段名 =?where 字段=?

//parameter神应该是(”abc“,23)

public static void executeUpdate(String sql,String[] parameters)

{

try

{

ct=getConnection();

ps = ct.prepareStatement(sql);

if(parameters!=null)

{

for(int i=0;i<parameters.length;i++)

{

ps.setString(i+1,parameters[i]);

}

}

ps.executeUpdate();

}

catch(Exception e)

{

e.printStackTrace();//开发阶段

//抛出异常

//可以处理,也可以不处理

throw new RuntimeException(e.getMessage());

}

finally

{

close(rs,ps,ct);

}

}

public static void close(ResultSet rs,Statement ps,Connection ct)

{

//关闭资源(先开后关)

if(rs!=null)

{

try

{

rs.close();

}

catch(SQLException e)

{

e.printStackTrace();

}

rs=null;

}

if(ps!=null)

{

try

{

ps.close();

}

catch(SQLException e)

{

e.printStackTrace();

}

ps=null;

}

if(null!=ct)

{

try

{

ct.close();

}

catch(SQLException e)

{

e.printStackTrace();

}

ct=null;

}

}

}

**********************************************dbinfo.properties配置文件保存数据库相关*********************

#这是我的mysql配置

url = jdbc:mysql://127.0.0.1/ test  //数据库名称(test)

username =// 用户名

driver = com.mysql.jdbc.Driver

passwd =//密码

时间: 2024-12-30 00:04:15

SqlHelper类(BY_韩顺平)的相关文章

分层模式开发+MVC模式开发--韩顺平雇员数据库管理

1.分层模式 在使用分层设计模式编写代码之前,我们更多的是采用面向过程然后眉毛胡子一把抓,在一两个程序代码里写完所有的功能,这样只适合于小型个人项目.因为不利于阅读和修改,只有编程的个人比较熟悉程序的结构.这不利于程序的扩展性和协同开发.所以,我们引入一个固定的模式来进行编程,使得所有代码结构清晰明确,而且易于扩展延伸. 此处介绍的一种模式是分层模式.把程序分成几个层次:界面层.业务逻辑层.数据层. 界面层:主要功能就是实现界面的显示.比如要在登陆页面显示输入框之类,就需要login.php中放

servlet&amp;jsp入门.....韩顺平笔记

u 背景知识介绍 J2EE的13种技术 java->servlet->jsp [技术总是有一个演变过程] zip粘贴到word设置 u 回顾一下我们现有的技术 java 基础(面向对象,集合,界面,线程,文件,网络) jdbc (java 的数据库编程) oracle / mysql / sqlserver html css javascript (web  开发)  ->网页设计 xml serlvet+jsp ->java web开发[使用java技术做 web开发] u ja

韩顺平_PHP程序员玩转算法公开课(第一季)01_算法重要性_五子棋算法_汉诺塔_回溯算法_学习笔记_源代码图解_PPT文档整理

文西马龙:http://blog.csdn.net/wenximalong/ 课程说明:算法是程序的灵魂,为什么有些网站能够在高并发,和海量吞吐情况下依然坚如磐石,大家可能会说: 网站使用了服务器集群技术.数据库读写分离和缓存技术(比如memcahced和redis等),那如果我再深入的问一句,这些优化技术又是怎样被那些天才的技术高手设计出来的呢? 我在上大学的时候就在想,究竟是什么让不同的人写出的代码从功能看是一样的,但从运行效率上却有天壤之别, 就拿以前在软件公司工作的实际经历来说吧, 我是

IT讲师韩顺平:我为什么辞去百万年薪,自己创业?

先自我介绍一下,我叫韩顺平,是一名IT讲师.国内很多自学PHP和Java的朋友都看过我的视频课程,算是有些知名度. 15年8月从传智辞职后,很多朋友非常关心我的去向,网上也流传各种说法,有的说我和某某培训机构合作了,共同创业:也有的说韩顺平去国外旅游去了:当然更多的人说我选择了创业,这里特别感谢大家对我的关注,尤其是我的韩粉们,总是通过各种途径来关注我,总是尝试着给我帮助,这让我非常的感动.目前,我手中的工作可以告个段落,有时间来写点文字,说说我的近况和我以后的计划. 由于当讲师出身,习惯性的喜

韩顺平_轻松搞定网页设计(html+css+javascript)_第34讲_js超级玛丽小游戏

韩顺平_轻松搞定网页设计(html+css+javascript)_第34讲_js超级玛丽小游戏_学习笔记_源代码图解_PPT文档整理 分类: PHP 2012-12-12 15:01 4256人阅读 评论(0) 收藏 举报 文西马龙:http://blog.csdn.net/wenximalong/ 采用面向对象思想设计超级马里奥游戏人物(示意图) 怎么用通过按键,来控制图片的位置 这个小游戏,用面向对象会很方便,不用面向对象会很麻烦很麻烦,比如以后要讲解的坦克大战的游戏,要是用纯的面向过程或

分享一个简单的简单的SQLHelper类

分享一个简单的简单的SQLHelper类,代码如下: 1 class SqlHelper 2 { 3 public static readonly string connstr = 4 ConfigurationManager.ConnectionStrings["dbConnStr"].ConnectionString; 5 6 public static int ExecuteNonQuery(string cmdText, 7 params SqlParameter[] para

ASP.NET MVC 排球计分程序 (四)实体类和SqlHelper类的设计

整体解决方案的图如下: . 在Model里添加一个叫PersonA的类 public class PersonA { public int id { get; set; } public string name { get; set; } } 添加一个叫PersonB的类 public class PersonB { public int id { get; set; } public string name { get; set; } } 添加一个叫ScoreA的类 public class

韩顺平循序渐进学java 第04讲 流程控制

4.1 Java基本语法-三大流程控制 4.1.1 顺序控制 4.1.2 分支控制 ① 单分支 If(条件表达式) { 语句; } ② 双分支 If(条件表达式) { 语句; }else { 语句; } ③ 多分支 v  方法1: If(条件表达式) { 语句; }else if(条件表达式) { 语句; }else { 语句; } v  方法2: switch(条件表达式) { case 常量1: 语句1; break; case 常量2: 语句2; break; ... case 常量n:

韩顺平视频学习笔记-简易qq

1 package myclient; 2 3 import java.net.*; 4 import java.util.Date; 5 import java.text.SimpleDateFormat; 6 import java.awt.event.ActionEvent; 7 import java.awt.event.ActionListener; 8 import java.io.*; 9 import java.awt.*; 10 11 import javax.swing.*;