MyEclipse连接SQL

来源:互联网 发布:python 2.7不支持中文 编辑:程序博客网 时间:2024/05/16 04:00
package database;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class DbUtils {//driver public final static String DRIVER="com.mysql.jdbc.Driver";public final static String URL="jdbc:mysql:127.0.0.1:3306/labtask_db";public final static String USER="root";public final static String PASSWORD="root";/** * 获取连接 * @return */public Connection getConn(){Connection conn=null;//数据库连接try{//加载驱动:在静态初始化器中已经注册,所以调用JDBC的时候只需Class.forName(XXX);Class.forName(DRIVER);//通过驱动管理的DriverManager中的getConnection方法获得连接对象:建立数据库连接池conn=DriverManager.getConnection(URL, USER, PASSWORD);}catch(Exception e){//e.getMessage:获得具体的异常名称//e.printStackTrace():获得详细异常,异常名称、具体位置等System.out.println("连接失败"+e.getMessage());}return conn;//连接数据库返回值不能为空}/** * 创建执行SQL命令的Statement对象 * @param conn * @return *///Statement是一个接口,没有具体实现,通过conn.createStatement()创建具体对象public Statement createStatement(Connection conn){Statement stmt=null;//数据库操作try{//由当前数据库连接生成一个数据操作对象stmt,不可new,所有操作都经过操作对象传达给数据库服务器stmt=conn.createStatement();}catch(SQLException e){System.out.println("创建执行SQL命令的Statement对象!"+e.getMessage());}return stmt;}/** *  * @param conn * @param sql * @return *///PreparedStatement:预编译语句,相同SQL语句执行多次就使用//prepareStatement会先初始化SQL,先把这个SQL提交到数据库中进行预处理,多次使用可提高效率//createStatement不会初始化,没有预处理,没次都是从0开始执行SQLpublic PreparedStatement creaPreparedStatement(Connection conn,String sql){PreparedStatement stmt=null;//申明一个为PreparedStatement的对象try{stmt=conn.prepareStatement(sql);}catch(SQLException e){e.printStackTrace();}return stmt;}/** *  * @param conn * @param stmt * @param sql * @return *///执行SQL语句,返回的是单个ResultSet对象public ResultSet executeQuery(Connection conn,Statement stmt,String sql){ResultSet rs=null;try{rs=stmt.executeQuery(sql);}catch(SQLException e){e.printStackTrace();}return rs;}/** *  * @param sql * @return *///执行给定SQL语句,返回值是更新的数据记录量public int executeUpdate(String sql){Connection conn=null;Statement stmt=null;int c=0;try{conn=getConn();//用这个stmt数据操作对象进行数据更新stmt=createStatement(conn);c=stmt.executeUpdate(sql);}catch(SQLException e){}finally{//异常发生,方法返回之前,总是要执行的代码closeConnAndStmt(conn,stmt,null);//关闭连接}return c;}/** *  * @param conn * @param stmt * @param rs *///关闭连接,避免占用资源public void closeConnAndStmt(Connection conn,Statement stmt,ResultSet rs){try{if(rs!=null){rs.close();}if(stmt!=null){stmt.close();//操作关闭}if(conn!=null){conn.close();//数据库关闭}}catch(SQLException e){e.printStackTrace();}}/** * 测试 * @throws Exception  */public static void main(String[] args) throws Exception{DbUtils dbUtils=new DbUtils();Connection conn=dbUtils.getConn();Statement stmt=dbUtils.createStatement(conn);String stuNo="20120304";String stuName="可可";String sql="select * from t_student where 1=1";ResultSet rs=dbUtils.executeQuery(conn, stmt, sql);while(rs.next()){String clumn=rs.getString(1);System.out.println(clumn);}}}

0 0
原创粉丝点击