最近在做数据库的最后一个实验,在连接的时候踩了很多坑,所以记录一下
以下步骤都是基于老师给出的需求,部分操作非必要
一、关于数据库 (SqlServer2022 + SSMS19)
1.1 新建用户名
方法一 -- 使用T-Sql语句
正确代码如下,但是因为我没设置默认操作数据库,所以最后一句无法执行 -.-
-- 创建新的登录用户
create login username with password='password'
-- 创建新的数据库用户
create user username for login password
-- 授予角色权限
exec sp_addrolemember 'db-creator','username'
方法二 -- 使用视图操作(推荐)
第一步 采用windows身份验证
第二步 右键点击服务器属性 -> 安全性 -> 选择“SQL Server 和 Windows身份验证模式”
第三步 新建登录名
第四步 自定义登录名和密码(这是后续进行登录的关键)
第五步 数据库角色身份选择 public 和 db_owner (赋予操作权限)
第六步 设置 “授予” 和 “启用”(这样才能生效哦)
第七步 新建连接 进行登录验证
1.2 登录用户
上述验证无误 即可成功登录
1.3 新建数据库
新建查询,直接粘贴老师发的代码
按下F5执行操作
1.4 配置数据库
打开 sql server配置管理器 -> sql server网络配置 -> 找到下载时配置的协议名
确保三项协议的状态是“已启用”,点击TCP/IP协议 进行如下配置
协议选择:
IP地址选择:
win+R -> services.msc -> 右键点击 -> 重新启动服务
二、关于MAVEN项目 (IDEA 2023.1.3 + JDK17)
2.1 新建maven项目
File -> new -> project 配置如下
创建好的项目结构如下
2.2 导入SQLSERVER依赖
打开 pom.xml文件 添加如下代码
(这里真的试了很多次,头都大了,下面的代码对我来说是唯一可行的)
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>7.4.1.jre8</version>
</dependency>
2.3 导入配置(报错后进行的修改)
写到后面的时候 我的代码报错 javax/xml/bind/DatatypeConverter
所以在pom.xml中添加了如下依赖
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
参考文章 https://blog.csdn.net/weixin_41614525/article/details/121195197
2.4 测试代码连接数据库
打开 main.java.org.example.App 文件 将如下代码粘贴进去
注意 :url内的数据库名,用户名,密码填写自己实际的信息
SQL语句的操作,同样选择自己实际存在的表名
package org.example;
import java.sql.*;
/**
* Hello world!
*
*/
public class App
{
public static void main(String args[]) {
String url = "jdbc:sqlserver://127.0.0.1:1433;databaseName=dbname;user=username;password=password";//sa身份连接
// Declare the JDBC objects.
Connection con = null; //会话连接
Statement stmt = null; //用于执行静态SQL语句并返回其生成的结果的对象。
ResultSet rs = null; //数据库结果集的数据表
try {
//1-注册驱动器,驱动管理器类加载SQLServerDriver类的静态方法,如果没有添加这个驱动,则创建这个驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//2-与数据源获得连接
con = DriverManager.getConnection(url);
//3-创建一个Statement对象,用于将SQL语句发送到数据库
stmt = con.createStatement();
//4- SQL语句
String SQL = "SELECT * FROM Score";
//5-执行SQL,返回数据
rs = stmt.executeQuery(SQL);
//6-遍历
while (rs.next()) {
System.out.println(rs.getString(1) + "," + rs.getString(2).trim()+"," + rs.getString(3));
}
}
catch (Exception e) {
e.printStackTrace();
} finally {
if (rs != null)
try {
rs.close();
} catch (Exception e) {
}
if (stmt != null)
try {
stmt.close();
} catch (Exception e) {
}
if (con != null)
try {
con.close();
} catch (Exception e) {
}
}
}
}
三、报错汇总&&解决方法
ps:只是将我的解决方案放出来作为参考
3.1 java: 错误: 不支持发行版本 6 -- 解决方法
点击 file -> project structure

点击project 看到SDK版本
点击modules Language level版本与 上图SDK 一致
点击 file -> settings -> compiler -> java compiler
project bytetype version 版本 同样与上图一致
参考文章:https://blog.csdn.net/qq_43440821/article/details/130905333
3.2 通过端口 1433 连接到主机 127.0.0.1 的 TCP/IP 连接失败。错误:“connect timed out.........“
配置数据库的步骤出错,检查是否与图片配置一致
参考文章:https://blog.csdn.net/qq_35101267/article/details/109019454
3.3 用户 'username' 登录失败。 ClientConnectionId:
1. 删除用户名 重新创建
2. 确保配置无误 重新启动SSMS的连接
四、连接成功
看到在终端显示的数据,就证明连接成果咯