JDBC連接SQL server 實現增刪查改(IDEA整合)


一、環境搭建

1. SQL server 2019 和 SSMS

官網:https://www.microsoft.com/zh-cn/sql-server/sql-server-2019

SQL server 2019下載地址:https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads

SSMS 下載地址:https://docs.microsoft.com/zh-cn/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15

下載開發者版本:

具體安裝步驟和SSMS的安裝可參考:https://blog.csdn.net/m0_47180536/article/details/115406888

2. idea 2021.1

下載地址:https://www.jetbrains.com/zh-cn/idea/download/#section=windows

雖然是收費的,但是可以免費使用30天,也可以申請學生免費使用

3. SQL server連接包

連接包下載地址:https://docs.microsoft.com/zh-cn/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15

下載之后解壓得到如下文件:

有3個版本的jre供你選擇,根據自己電腦安裝的jdk版本進行選擇。

4. 創建數據庫及數據表

安裝完成SQL server 2019和SSMS之后,打開SSMS

填寫你的密碼,點擊連接

右擊數據庫,選擇新建數據庫

數據庫名稱為test,點擊確定,即可看到創建的數據庫test


點擊新建查詢,並看使用的數據庫是否為你所創建的數據庫

在編輯區寫建表的sql語句,

create table users(  --創建表名為users的表
	id int primary key identity(1,1),    --字段名為id,是主鍵,自動增長,從1開始,每次增長1
	name varchar(50),        --字段名為name
	password varchar(50)    --字段名為password
)

點擊執行,看到命令已完成表示建表成功!

插入數據

insert into users values('楊小強','123456');   --不用插入id的值是因為設置了id字段自動增長,SQL server自動幫我們完成插入
insert into users values('李華','099876');
insert into users values('張三','246751');

若消息顯示3個1行受影響,表示插入數據成功,可用查詢語句查看: SELECT * FROM users

至此,環境已經准備好了!

二、JDBC連接SQL server

項目地址:https://github.com/XQ-yang/JDBC

1. IDEA創建java項目,將SQLserver的連接jar包導入項目依賴

打開項目結構(快捷鍵Ctrl+Shift+Alt+S),選擇Libraries,點擊“+”,選擇java,之后就選擇你下載后解壓的jdk對應版本的jar包

2. 創建包jdbc,編寫java類

DBUtil類

注冊驅動及釋放資源

package JDBC;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 * @Author: XQ-Yang
 * @Date: 2021/5/5 0005
 * @Tools: IntelliJ IDEA
 * @Remember: Be professional every day
 **/
public class DBUtil {
    //加載JDBC驅動
    private String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    //連接服務器和數據庫
    private String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=test";
    //默認用戶名,一般為sa
    private String userName = "sa";
    //用戶名密碼
    private String password = "123456";

    /**
     * 注冊驅動
     * @return
     */
    public Connection getConn() {
        Connection dbConn = null;
        try {
            Class.forName(driverName);
            dbConn = DriverManager.getConnection(dbURL, userName, password);
            // 如果連接成功 控制台輸出
            System.out.println("SQL server數據庫連接成功!");
        } catch (Exception e) {
            System.out.println("SQL server數據庫連接失敗?????");
            e.printStackTrace();
        }

        return  dbConn;
    }

    /**
     * 釋放資源
     * @param rs
     * @param pstm
     * @param conn
     * @throws Exception
     */
    public void closeConn(ResultSet rs, PreparedStatement pstm, Connection conn) throws Exception {
        if (rs != null) {
            rs.close();
        }
        if (pstm != null) {
            pstm.close();
        }
        if (conn != null) {
            conn.close();
        }
    }
}

User類

實體類,映射數據庫中的字段

package JDBC;

/**
 * @Author: XQ-Yang
 * @Date: 2021/5/5 0005
 * @Tools: IntelliJ IDEA
 * @Remember: Be professional every day
 **/
public class User {
    public int id;
    public String name;
    public String password;

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

UserDao類

實現增刪查改功能

package JDBC;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 * @Author: XQ-Yang
 * @Date: 2021/5/5 0005
 * @Tools: IntelliJ IDEA
 * @Remember: Be professional every day
 **/
public class UserDao {
    DBUtil db = new DBUtil();

    /**
     * 插入用戶信息
     */
    public void insertUser(User user) throws Exception {
        Connection conn = db.getConn();
        PreparedStatement pstm;
        //sql語言
        String sql_insert = "insert into users values(?,?)";
        pstm = conn.prepareStatement(sql_insert);

        //填充sql語句中的?
        pstm.setString(1, user.getName());
        pstm.setString(2, user.getPassword());

        //使用executeUpdate函數執行sql語句
        int row = pstm.executeUpdate();
        if (row > 0) {
            System.out.println("新增用戶成功, " + row + "行受到影響");
        } else {
            System.out.println("新增用戶失敗!");
        }
        //釋放對數據庫的連接
        db.closeConn(null, pstm, conn);
    }

    /**
     * 修改用戶信息
     */
    public void updateUser(int id, User user) throws Exception {
        Connection conn = db.getConn();
        PreparedStatement pstm;
        String sql_update = "update users set password=? where id=?";
        pstm = conn.prepareStatement(sql_update);

//        pstm.setString(1,user.getUsername());     //運行報錯說與mysql關鍵字相同,故不修改用戶名
        pstm.setString(1, user.getPassword());
        pstm.setInt(2, id);

        int row = pstm.executeUpdate();
        if (row > 0) {
            System.out.println("修改用戶信息成功, " + row + "行受到影響");
        } else {
            System.out.println("修改用戶信息失敗!");
        }
        db.closeConn(null, pstm, conn);
    }

    /**
     * 刪除用戶信息
     */
    public void deleteUser(int id) throws Exception {
        Connection conn = db.getConn();
        PreparedStatement pstm;
        String sql_delete = "delete from users where id=?";
        pstm = conn.prepareStatement(sql_delete);

        pstm.setInt(1, id);

        int row = pstm.executeUpdate();
        if (row > 0) {
            System.out.println("刪除用戶成功, " + row + "行受到影響");
        } else {
            System.out.println("刪除用戶失敗!");
        }
        db.closeConn(null, pstm, conn);
    }

    /**
     * 查詢全部用戶
     */
    public void findUser() throws Exception {
        Connection conn = db.getConn();
        PreparedStatement pstm;
        ResultSet res;

        String sql_find = "select * from users ";

        pstm = conn.prepareStatement(sql_find);

        res = pstm.executeQuery();
        System.out.println("查詢用戶成功!!");
        System.out.println("id\tname\tpassword");
        while (res.next()) {
            System.out.println(res.getInt(1) + "\t" +
                    res.getString(2) + "\t" + res.getString(3));
        }


        db.closeConn(res, pstm, conn);
    }

    /**
     * 根據查詢用戶
     */
    public void findUserbyid(int id) throws Exception {
        Connection conn = db.getConn();
        PreparedStatement pstm;
        ResultSet res;

        String sql_find = "select * from users where id = ?";

        pstm = conn.prepareStatement(sql_find);

        pstm.setInt(1, id);

        res = pstm.executeQuery();
        if (res.next()) {
            System.out.println("找到了該用戶!");
            System.out.println("id\tname\tpassword");
            System.out.println(res.getInt(1) + "\t" +
                    res.getString(2) + "\t" + res.getString(3));
        } else {
            System.out.println("未找到該用戶!");
        }
        db.closeConn(res, pstm, conn);
    }

    /**
     * 統計用戶
     */
    public void countUser() throws Exception {
        Connection conn = db.getConn();
        PreparedStatement pstm;
        ResultSet res;

        String sql_count = "select count(*) from users";

        pstm = conn.prepareStatement(sql_count);
        res = pstm.executeQuery();
        int count = 0;
        if (res.next()) {
            count = res.getInt(1);
            System.out.println("用戶數有" + count + "個!");
        } else {
            System.out.println("沒有用戶!");
        }

        db.closeConn(res, pstm, conn);
    }

}

Test類

用於測試增刪查改功能

package JDBC;

/**
 * @Author: XQ-Yang
 * @Date: 2021/5/4 0004
 * @Tools: IntelliJ IDEA
 * @Remember: Be professional every day
 **/
public class Test {
    public static void main(String[] args) throws Exception {
        UserDao dao = new UserDao();
        User user = new User();

        dao.findUser();
    }

}

Test類運行結果:

運行結果出現了中文亂碼,得處理一下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM