研究ノートJDBCデータベース接続

デモの構造:

JDBCデータベース接続:

JDBCデータベースは接続データの最も基本的な実施形態、ジャーmysqlの接続を導入する必要に接続されています

直接データベースに接続することができます印象的に追加、通常のJavaプロジェクト、導入ジャーパッケージのlibフォルダを作成し、作成します。

コードは以下の通りであります:

package conn;

import java.sql.*;

public class JdbcCon {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        /**
         * jdbc连接数据库,分为五个步骤如下:
         */
        //1.注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        //2.获取连接
        Connection connection =         
        DriverManager.getConnection("jdbc:mysql://localhost:3306/jtsys", "root", "root");
        //3.获取传输器
        Statement statement = connection.createStatement();
        String sql = "select * from sys_users";
        //4.处理结果
        ResultSet resultSet = statement.executeQuery(sql);
        while(resultSet.next()){
            String username = resultSet.getString("username");
            String mobile = resultSet.getString("mobile");
            String email = resultSet.getString("email");
            System.out.println("username="+username+";mobile="+mobile+";email="+email);
        }
        //5.关闭资源
        resultSet.close();
        statement.close();
        connection.close();
    }
}

今の枠組みの多くは、JDBCパッケージ、および結果セットの処理パッケージであるためには、カプセル化されたフレームワークは、私たちに大きな利便性をもたらしていますが、エントリホワイトよう、ゆっくりと基礎との開始を強化することを望んでいます。

ここでは、自分自身が処理のためのオブジェクトを作成するために、結果セットは次のとおりです。

ユーザテーブル構造

まず:ユーザーオブジェクトを作成し、オブジェクトが簡素化されました

package pojo;

public class User {
    private Integer id;
    private String username;
    private String mobile;
    private String email;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", mobile='" + mobile + '\'' +
                ", email='" + email + '\'' +
                '}';
    }
}

第二:JdbcUtilを作成します。

package utils;

import java.sql.*;

public class JdbcUtil {

    public static Connection getConnection() throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.jdbc.Driver");
        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/jtsys","root","root");
        return connection;
    }

    public static void close(Connection connection, Statement statement, ResultSet resultSet){
        if(connection != null){
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            connection = null;
        }
        if(statement != null){
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            statement = null;
        }
        if(resultSet != null){
            try {
                resultSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            resultSet = null;
        }
    }
}

第三に:テスト・オブジェクト・マップ

package conn;

import pojo.User;
import utils.JdbcUtil;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class JdbcConPojo {
    public static void main(String[] args) {
        /**
         * 对结果集进行处理,主要依赖反射,通过对象的set方法给对象赋值
         * 为了方便起见,将jdbc的获取连接和关闭资源的方法封装到工具类中
         */
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;

        try {
            connection = JdbcUtil.getConnection();
            statement = connection.createStatement();
            String sql = "select id,username,mobile,email from sys_users";
            resultSet = statement.executeQuery(sql);
            //根据结果集获取列数据
            String[] columnDatas = getColumnData(resultSet);
            //获取对象的所有方法
            Method[] methods = User.class.getMethods();
            //创建user数组列表封装数据
            List<User> userList = new ArrayList<User>();
            while (resultSet.next()){
                for (int i = 0; i <columnDatas.length ; i++) {
                    //获取对象实例
                    User user = User.class.newInstance();
                    //获取列名
                    String columnName = columnDatas[i];
                    //构建set方法
                    String methodName = "set"+columnName;
                    //遍历所有方法,构建方法和对象方法匹配时,注入值
                    for (Method method : methods) {
                        if(methodName.equalsIgnoreCase(method.getName())){
                            method.invoke(user,resultSet.getObject(columnName));
                            break;
                        }
                    }
                    userList.add(user);
                }
            }
            for (User user : userList) {
                //sout在项目中是被日志所替代的,这里为了学习没有引入log包
                System.out.println(user);
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }finally {
            JdbcUtil.close(connection,statement,resultSet);
        }

    }

    private static String[] getColumnData(ResultSet resultSet) throws SQLException {
        //获取元数据
        ResultSetMetaData metaData = resultSet.getMetaData();
        //获取总列数
        int columnCount = metaData.getColumnCount();
        //遍历并添加到数组中
        String[] columns = new String[columnCount];
        for (int i = 1; i <= columnCount; i++) {
            columns[i-1] = metaData.getColumnLabel(i);
        }
        return columns;
    }
}

実際の作業に関連したJDBCデータベースは、複数のデータベースの長時間動作のための書き込みコードへの必要性を含む、実質的に少ないこと、あまりにも面倒で煩雑な操作を超えています。

ここで削除、変更デモインサートであります:

package conn;

import utils.JdbcUtil;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class JdbcMethod {
    public static void main(String[] args) {
        Connection connection = null;
        Statement statement = null;
        //ResultSet resultSet = null;

        try {
            connection = JdbcUtil.getConnection();
            statement = connection.createStatement();
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String updateSql = "update sys_users set username='chengcheng' where id='19'";
            String deleteSql = "delete from sys_users where id='19'";
            String insertSql =
                    "insert into sys_users values(19,'wangcheng','12345','12345','[email protected]','18889996666',1,2,'"+dateFormat.format(new Date())+"','"+dateFormat.format(new Date())+"','admin','admin')";
            /*boolean insertFlag = statement.execute(insertSql);
            System.out.println(insertFlag);*/
            boolean updateFlag = statement.execute(updateSql);
            System.out.println(updateFlag);
            System.out.println("输入D删除数据,请输入:");
            Scanner scanner = new Scanner(System.in);
            String s = scanner.nextLine();
            if(s.equalsIgnoreCase("d")){
                boolean deleteFlag = statement.execute(deleteSql);
                System.out.println(deleteFlag);
            }
            System.out.println("删除成功,需要重新插入数据请输入I,请输入:");
            String i = scanner.nextLine();
            if(i.equalsIgnoreCase("i")){
                boolean insertFlag = statement.execute(insertSql);
                System.out.println(insertFlag);
            }

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JdbcUtil.close(connection,statement,null);
        }
    }
}

このレコードを見つけるのは簡単に忘れてしまった後、ここでは、データベースへのJDBC接続を学ぶことは、以上です。何か間違ってはありますが、私は兄を願って修正し、非常に感謝!

公開された15元の記事 ウォンの賞賛0 ビュー278

おすすめ

転載: blog.csdn.net/weixin_45146962/article/details/104855932