MyEclipse web项目连接数据库

1、Build path添加jdbc驱动包

2、编写驱动类

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Connect {
    public  Connection getconnect(){
        Connection con=null;
        String driver = "com.mysql.jdbc.Driver";
        String url = "jdbc:mysql://localhost:3306/bs?serverTimezone=UTC";
        String user = "root";     //自己数据库的用户名
        String password = "1234";   //自己数据库的密码
        try {
            Class.forName(driver);
            con = DriverManager.getConnection(url, user, password);
            if (!con.isClosed())
                System.out.println("\n\t\t成功以 " + user + " 身份连接到数据库!!!");
            return con;
        }
        catch (ClassNotFoundException e) {
            // 数据库驱动类异常处理
            System.out.println("Sorry,can`t find the Driver!");
            e.printStackTrace();
        }
        catch (SQLException e) {
            // 数据库连接失败异常处理
            e.printStackTrace();
        }
        catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        finally {
            System.out.println("\t\t\t\t\t\t\t\t获取数据库数据完毕!!!");
        }
        return con;
    }
}

3、调用这个类

package com.ins;

import java.sql.*;
import javax.naming.*;
import javax.sql.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSetMetaData;

public class run {
    public static void main(String[] args) {

        
        test("select * from d_org");
    }
    
    
    public static void test(String sql){
        Connect _connect=new Connect();  
        Connection con=_connect.getconnect();
        try
        {
            Statement statement = con.createStatement();
            // 3.ResultSet类,用来存放获取的结果集!!
            ResultSet rs = statement.executeQuery(sql);
            ResultSetMetaData rsmd = rs.getMetaData();
            int columnsNumber = rsmd.getColumnCount();
            while (rs.next()) {
                for (int i = 1; i <= columnsNumber; i++) {
                    if (i > 1) System.out.print(",  ");
                    String columnValue = rs.getString(i);
                    System.out.print(rsmd.getColumnName(i) + " " + columnValue);
                }
                System.out.println("\n");
            }

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

    }


}

其他两个访问数据库查询和保存结果的类:

package com.ins;

import java.sql.*;
import javax.naming.*;
import javax.sql.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSetMetaData;

public class ExeQueryResult {
    public String[][] getSelectResultWithStringArray(String sql)
    {
        Connect _connect=new Connect();   //连接数据库
        Connection con=_connect.getconnect();

        if(con==null)
            return null;

        try
        {
            Statement statement = con.createStatement();
            ResultSet rs = statement.executeQuery(sql);   // 3.ResultSet类,用来存放获取的结果集!!

            if(rs==null){
                System.out.println("查询结果为空!\n");
                return null;
            }

            ResultSetMetaData rsmd = rs.getMetaData();
            int rowsNumber = 0;
            int columnsNumber = rsmd.getColumnCount();   //列数目
            rs.last();
            rowsNumber=rs.getRow();     //行数目
            rs.first();

            Object o;
            Object[][] ob = new Object[rowsNumber][columnsNumber];
            int colType;

            for (int i = 0; i < rowsNumber; i++) {
                for (int j = 0; j < columnsNumber; j++) {
                    o = rs.getObject(j + 1);
                    if(getIndexType(rs,j) == 0)
                        System.out.print("没有该类型!");
                    else {
                        colType = getIndexType(rs,j);
                        switch (colType) {
                            case java.sql.Types.DATE:
                                Date d = (Date) o;
                                if (d != null)
                                {
                                    ob[i][j] = d.toString();
                                }
                                break;
                            case java.sql.Types.TIME:
                                Time t = (Time) o;
                                if (t != null)
                                {
                                    ob[i][j] = t.toString();
                                }
                                break;
                            case java.sql.Types.TIMESTAMP:    //时间戳
                                Timestamp ts = (Timestamp) o;
                                if (ts != null)
                                {
                                    ob[i][j] = ts.toString();
                                }
                                break;
                            default:
                                ob[i][j] = o;
                                break;
                        }
                    }

                }
                rs.next();
            }
            con.close();

            String[][] s = new String[ob.length][ob[0].length];
            for (int i = 0; i < ob.length; i++) {
                for (int j = 0; j < ob[i].length; j++) {
                    if (ob[i][j] != null) {

                        s[i][j] = ob[i][j].toString().trim();  //tirm()去掉两端多余字符
                    }
                    else {
                        s[i][j] = "";
                    }
                }
            }

            return s;
        }
        catch (Exception e)
        {
            e.printStackTrace();
            return null;
        }
    }

    private int getIndexType(ResultSet set,int i) {
        int type = 0;
        try {
            /*
             getColumType()方法
             方法说明:根据字段的索引值取得字段的类型,返回值的定义在java.sql.Type类
             参数:column,字段的索引值,从1开始
             返回值:字符串,SQL的数据类型定义在java.sql.Type类
             异常产生:数据库发生任何的错误,则会产生一个SQLException对象
             */
            type = set.getMetaData().getColumnType(i + 1);
        }
        catch (SQLException e) {
            e.printStackTrace();
        }
        return type;
    }

}


   /*
            int r=0;
            for (int i = 1; i <= columnsNumber; i++) {
                String s1=rsmd.getColumnLabel(i);
                s[0][i]=s1;
            }

            rs.first();
            while (rs.next()) {
                r++;
                for(int i=1;i<=columnsNumber;i++){
                    String columnValue =new String(rs.getString(i));
                    s[r][i]=columnValue;
                }
            }

    */
package com.ins;

import java.sql.*;
import java.util.*;
import javax.naming.*;
import javax.sql.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSetMetaData;

public class ExeInsertUpdateDelete {
    public final   static int   INSERT = 1;   //插入
    public final   static int   UPDATE = 2;  //修改
    public final   static int   DELETE = 3;  //删除
    public static  String  keyMark = "$";     //关键子段标识
    public static  String  nonKeyMark ="_";  //一般字段标识

    Connect _connect=new Connect();
    Connection con=_connect.getconnect();

    public  boolean execSql(String tableName,int tableAction,Hashtable dbParam){
        return false;
    }

    public  boolean execSql(String sqlStr){

        try{
            Statement stmt1 =con.createStatement();   // 创建用于执行静态sql语句的Statement对象
            //String sql="insert into d_org(ORG_ID,ORG_NAME,ORG_ORDER,UP_ORG_ID) values (1,null,null,0)" ;
            stmt1.executeUpdate(sqlStr);
            return true;
        }
        catch (SQLException e){
            e.printStackTrace();
            return false;
        }
       // return false;
    }

    public  boolean execSql(String[] sql){

        Statement statement=null;
        try {
            Class.forName("com.mysql.jdbc.Driver"); //加载驱动
            statement =con.createStatement();
            con.setAutoCommit(false);  //相当于 set autocommit=0;
            statement =con.createStatement();
            for(int i=0;i<sql.length;i++) {
                statement.addBatch(sql[i]);
            }
            statement.executeBatch(); //将上述SQL语句批量执行。
            con.commit();  //executeBatch()语句若不出错,提交事务。
            return true;
        }
        catch (Exception e) {
            try {
                //如果在创建连接对象过程中爆发异常,connection就会为null。若不加if语句,就会出现空指针异常。
                if(con!=null) {
                    con.rollback(); //executeBatch()语句若出错,回滚,两个SQL语句执行不成功。
                }
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
            e.printStackTrace();
            return false;
        }
        finally {
            try {
                if (statement!=null) {
                    statement.close();
                }
            }
            catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                if (con!=null) {
                    con.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/yunn/p/12908989.html