一、環境搭建
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://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連接包
下載之后解壓得到如下文件:

有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類運行結果:

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