(5)在数据库Student中,使用存储过程sp_adduser为登录名login_test创建名为user_test数据库用户。 创建后试登录服务器,观察登录结果,是否可以访问用户数据库Student。用SQLserver写
时间: 2024-03-05 20:48:42 浏览: 19
可以的,下面是SQL Server的代码实现:
```
USE Student;
GO
-- 添加数据库用户
EXEC sp_adduser @loginame = 'login_test', @name_in_db = 'user_test';
GO
-- 登录测试
EXECUTE AS USER = 'user_test';
SELECT SUSER_NAME(), USER_NAME();
REVERT;
GO
```
执行完上述代码后,即可为登录名`login_test`创建名为`user_test`的数据库用户,并通过`EXECUTE AS USER`测试登录是否成功。如果登录成功,则会显示当前用户的`SUSER_NAME()`和`USER_NAME()`,并且可以访问用户数据库`Student`。
相关问题
使用sp_addlogin、sp_adduser新建登录名
好的,以下是使用sp_addlogin、sp_adduser在SQL Server中创建新登录名的步骤:
1. 打开SQL Server Management Studio,连接到SQL Server数据库引擎。
2. 在“新建查询”窗口中输入以下T-SQL代码:
```
USE [master]
GO
EXEC master.dbo.sp_addlogin @loginame = N'your_login_name', @passwd = N'your_password', @defdb = N'TM', @deflanguage = N'us_english'
GO
EXEC master.dbo.sp_adduser @loginame = N'your_login_name', @name_in_db = N'your_user_name_in_DB'
GO
```
3. 将代码中的“your_login_name”替换为您想要创建的登录名,将“your_password”替换为此登录名的密码,将“TM”替换为您想要设置为默认数据库的数据库名称,将“your_user_name_in_DB”替换为您想要在数据库中为此用户设置的用户名。
4. 在“新建查询”窗口中执行代码,即可创建新的登录名和用户。
注意:在执行此操作之前,请确保您有足够的权限进行此操作,并且使用安全的密码来保护新创建的登录名。
用Java写一个登录注册功能,数据库使用mysql,表名为sys_user
好的,下面是一个简单的Java登录注册功能,使用MySQL数据库存储用户信息,表名为sys_user:
首先,需要创建一个User实体类,用于存储用户信息:
```java
public class User {
private int id;
private String username;
private String password;
public User() {}
public User(String username, String password) {
this.username = username;
this.password = password;
}
// getter and setter methods
}
```
接下来,创建一个DBUtil类,用于连接数据库、执行SQL语句等操作:
```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DBUtil {
private static final String URL = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false";
private static final String USERNAME = "root";
private static final String PASSWORD = "123456";
public static Connection getConnection() {
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void close(Connection conn, PreparedStatement ps, ResultSet rs) {
try {
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
其中,URL、USERNAME和PASSWORD分别为数据库的连接地址、用户名和密码。
接下来,创建一个UserDAO类,用于操作用户表sys_user:
```java
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserDAO {
public boolean addUser(User user) {
boolean result = false;
Connection conn = null;
PreparedStatement ps = null;
try {
conn = DBUtil.getConnection();
String sql = "INSERT INTO sys_user (username, password) VALUES (?, ?)";
ps = conn.prepareStatement(sql);
ps.setString(1, user.getUsername());
ps.setString(2, user.getPassword());
int rows = ps.executeUpdate();
if (rows > 0) {
result = true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.close(conn, ps, null);
}
return result;
}
public User getUserByUsername(String username) {
User user = null;
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = DBUtil.getConnection();
String sql = "SELECT * FROM sys_user WHERE username = ?";
ps = conn.prepareStatement(sql);
ps.setString(1, username);
rs = ps.executeQuery();
if (rs.next()) {
int id = rs.getInt("id");
String password = rs.getString("password");
user = new User(username, password);
user.setId(id);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.close(conn, ps, rs);
}
return user;
}
}
```
其中,addUser方法用于向数据库中添加用户信息,getUserByUsername方法用于根据用户名查询用户信息。
最后,创建一个Main类,用于测试:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请选择操作:1.注册 2.登录");
int option = sc.nextInt();
sc.nextLine(); // 读取换行符
if (option == 1) {
System.out.println("请输入用户名:");
String username = sc.nextLine();
System.out.println("请输入密码:");
String password = sc.nextLine();
UserDAO userDAO = new UserDAO();
User user = new User(username, password);
boolean result = userDAO.addUser(user);
if (result) {
System.out.println("注册成功!");
} else {
System.out.println("注册失败!");
}
} else if (option == 2) {
System.out.println("请输入用户名:");
String username = sc.nextLine();
System.out.println("请输入密码:");
String password = sc.nextLine();
UserDAO userDAO = new UserDAO();
User user = userDAO.getUserByUsername(username);
if (user != null && user.getPassword().equals(password)) {
System.out.println("登录成功!");
} else {
System.out.println("用户名或密码错误!");
}
} else {
System.out.println("无效操作!");
}
}
}
```
以上就是一个简单的Java登录注册功能的实现,使用MySQL数据库存储用户信息。