在库中创建表 userinfo,在表中插入 2 条记录,分别为(1,user01,1995-7-1,男),(2,user02, 1995-9-1,女),口令与用户名相同, password 字段用 password 函数加密
时间: 2023-11-29 21:05:38 浏览: 102
好的,您可以按照以下的 SQL 语句在数据库中进行操作:
首先创建 userinfo 表:
```
CREATE TABLE userinfo (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50),
birthday DATE,
gender ENUM('男', '女'),
password VARCHAR(100)
);
```
然后插入两条记录:
```
INSERT INTO userinfo (username, birthday, gender, password) VALUES
('user01', '1995-07-01', '男', PASSWORD('user01')),
('user02', '1995-09-01', '女', PASSWORD('user02'));
```
这样操作之后,您就在数据库中创建了一个名为 userinfo 的表,并向其中插入了两条记录。同时,密码字段已经使用 password 函数进行了加密处理。
相关问题
((1)创建t_users表,字段为id、name、password.email、birthday; (2)创建User类,属性与数据库的七users表中字段一一对应,用于封装数据; 3)使用JDBC相关接口和类实现数据库中数据的查询; (4)创建Servlet程
序实现以下功能:
- 注册:将用户提交的信息插入到t_users表中;
- 登录:根据用户输入的用户名和密码查询t_users表中是否存在对应的记录;
- 修改密码:更新t_users表中对应用户的密码字段;
- 查询用户信息:根据用户输入的用户名查询t_users表中对应的记录,并返回给前端页面。
1. 创建t_users表,字段为id、name、password、email、birthday
```sql
CREATE TABLE t_users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
password VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL,
birthday DATE NOT NULL
);
```
2. 创建User类,属性与数据库的t_users表中字段一一对应,用于封装数据
```java
public class User {
private int id;
private String name;
private String password;
private String email;
private Date birthday;
// 构造方法、getters、setters
}
```
3. 使用JDBC相关接口和类实现数据库中数据的查询
```java
public class UserDao {
private Connection conn;
public UserDao() {
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/db";
String user = "root";
String password = "root";
conn = DriverManager.getConnection(url, user, password);
} catch (Exception e) {
e.printStackTrace();
}
}
// 根据用户名和密码查询用户信息
public User findUser(String name, String password) {
User user = null;
try {
String sql = "SELECT * FROM t_users WHERE name=? AND password=?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, name);
pstmt.setString(2, password);
ResultSet rs = pstmt.executeQuery();
if (rs.next()) {
user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setPassword(rs.getString("password"));
user.setEmail(rs.getString("email"));
user.setBirthday(rs.getDate("birthday"));
}
rs.close();
pstmt.close();
} catch (Exception e) {
e.printStackTrace();
}
return user;
}
// 将用户信息插入到t_users表中
public void addUser(User user) {
try {
String sql = "INSERT INTO t_users(name, password, email, birthday) VALUES(?, ?, ?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, user.getName());
pstmt.setString(2, user.getPassword());
pstmt.setString(3, user.getEmail());
pstmt.setDate(4, user.getBirthday());
pstmt.executeUpdate();
pstmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}
// 根据用户名查询用户信息
public User findUserByName(String name) {
User user = null;
try {
String sql = "SELECT * FROM t_users WHERE name=?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, name);
ResultSet rs = pstmt.executeQuery();
if (rs.next()) {
user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setPassword(rs.getString("password"));
user.setEmail(rs.getString("email"));
user.setBirthday(rs.getDate("birthday"));
}
rs.close();
pstmt.close();
} catch (Exception e) {
e.printStackTrace();
}
return user;
}
// 更新用户密码
public void updatePassword(User user) {
try {
String sql = "UPDATE t_users SET password=? WHERE name=?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, user.getPassword());
pstmt.setString(2, user.getName());
pstmt.executeUpdate();
pstmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public void close() {
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
4. 创建Servlet程序实现以下功能:
- 注册:将用户提交的信息插入到t_users表中;
- 登录:根据用户输入的用户名和密码查询t_users表中是否存在对应的记录;
- 修改密码:更新t_users表中对应用户的密码字段;
- 查询用户信息:根据用户输入的用户名查询t_users表中对应的记录,并返回给前端页面。
```java
public class UserServlet extends HttpServlet {
private UserDao userDao = new UserDao();
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String action = request.getParameter("action");
if (action.equals("register")) {
register(request, response);
} else if (action.equals("login")) {
login(request, response);
} else if (action.equals("changepassword")) {
changePassword(request, response);
} else if (action.equals("finduser")) {
findUser(request, response);
}
}
// 注册
private void register(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String name = request.getParameter("name");
String password = request.getParameter("password");
String email = request.getParameter("email");
String birthday = request.getParameter("birthday");
User user = new User();
user.setName(name);
user.setPassword(password);
user.setEmail(email);
user.setBirthday(Date.valueOf(birthday));
userDao.addUser(user);
response.sendRedirect("success.jsp");
}
// 登录
private void login(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String name = request.getParameter("name");
String password = request.getParameter("password");
User user = userDao.findUser(name, password);
if (user != null) {
HttpSession session = request.getSession();
session.setAttribute("user", user);
response.sendRedirect("main.jsp");
} else {
response.sendRedirect("fail.jsp");
}
}
// 修改密码
private void changePassword(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String name = request.getParameter("name");
String password = request.getParameter("password");
User user = new User();
user.setName(name);
user.setPassword(password);
userDao.updatePassword(user);
response.sendRedirect("success.jsp");
}
// 查询用户信息
private void findUser(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String name = request.getParameter("name");
User user = userDao.findUserByName(name);
request.setAttribute("user", user);
request.getRequestDispatcher("userinfo.jsp").forward(request, response);
}
public void destroy() {
userDao.close();
}
}
```
class Base(db.Model): # 创建时间 __abstract__ = True id = db.Column(db.BigInteger, primary_key=True, ) create_at = db.Column(db.DateTime, default=datetime.datetime.now) # ,info='插入时间') # 更新时间 update_at = db.Column(db.DateTime, default=datetime.datetime.now) # , onupdate=datetime.datetime.now,info='最后一次更新时间') status = db.Column(db.INTEGER, default=1) # , info='1:有效 0:无效') class User(Base): __tablename__ = "user" nickname = db.Column(db.String(100)) # info='用户名') email = db.Column(db.String(100),unique=True) # ,info='邮箱地址') login_name = db.Column(db.String(20),unique=True) # ,info='登录用户名') login_pwd = db.Column(db.String(32)) # ,info='登录密码') login_salt = db.Column(db.String(32)) # ,info='登录密码的随机加密秘钥') info =db.Column(db.Integer,db.ForeignKey('userinfo.id')) class UserInfo(db.Model): __tablename__ = "userinfo" id = db.Column(db.BigInteger, primary_key=True) mobile = db.Column(db.String(20), nullable=True) # , info='手机号码') sex = db.Column(db.INTEGER, default=0) # , info='1:男 2:女 0:没填写') avatar = db.Column(db.String(64), nullable=True) # ,info='头像') user = db.relationship('User',backref=db.backref('UserInfo',uselist=False)) 检查代码
这段代码是一个 Python Flask 中使用 SQLAlchemy 进行 ORM 映射的示例代码。其中定义了一个名为 Base 的抽象模型类,包括 id、create_at、update_at 和 status 等四个字段,作为其他模型类的基类继承使用。
接下来定义了两个实际的模型类 User 和 UserInfo,分别映射到名为 user 和 userinfo 的数据库表中。其中 User 类继承了 Base 类,同时定义了 nickname、email、login_name、login_pwd、login_salt 和 info 等字段,用于表示用户的各种信息。而 UserInfo 类则包括 id、mobile、sex、avatar 和 user 等字段,用于表示用户的附加信息。
在 User 类中,通过 db.ForeignKey('userinfo.id') 定义了一个外键关联到 UserInfo 表的 id 字段,表示该用户信息属于哪个 UserInfo 记录。而在 UserInfo 类中,则通过 db.relationship('User',backref=db.backref('UserInfo',uselist=False)) 定义了一个反向引用,表示该用户信息对应的 User 记录。
阅读全文