C++ 定义一个SQlite数据库,该数据库支持登录和消息,以及有关用户的数据
我正在建立一个类似玩具银行的系统。我需要一些方法来存储用户名和密码。存储一些关于每个用户的数据,如姓名、地址等。我还想让它能够存储用户提交的消息,并将它们显示给其他用户 我应该如何定义SQlITE表 我有一点想法 用户表 账目表 消息表C++ 定义一个SQlite数据库,该数据库支持登录和消息,以及有关用户的数据,c++,mysql,sqlite,C++,Mysql,Sqlite,我正在建立一个类似玩具银行的系统。我需要一些方法来存储用户名和密码。存储一些关于每个用户的数据,如姓名、地址等。我还想让它能够存储用户提交的消息,并将它们显示给其他用户 我应该如何定义SQlITE表 我有一点想法 用户表 账目表 消息表 谢谢。第一点,SQLite可能不是最合适的选择,也许你已经读过了 以下是一些示例SQL,可以帮助您设计数据库:- 块1-创建表 注释 前3条语句删除了允许重新定义的表,您通常不会包含它们,因此它们已被注释掉 user\u hash和user\u salt列用
谢谢。第一点,SQLite可能不是最合适的选择,也许你已经读过了 以下是一些示例SQL,可以帮助您设计数据库:-
块1-创建表 注释
- 前3条语句删除了允许重新定义的表,您通常不会包含它们,因此它们已被注释掉
- user\u hash和user\u salt列用于用户验证直接存储密码是非常不安全的。您应该调查安全方法李>
块2-填充用户表:- 注释
- 添加3个用户
- 第一个值null允许自动生成id(实际上它只是自动生成的rowid的别名,在表中每行都是unqiue)
使用数据或一些选择 方框5-根据注释显示每个用户的余额 结果为:-
- i、 詹姆斯·邦德有125000+1234=126234等
希望这将为您提供一些想法/建议,使您能够开始设计数据库
请永远不要保存密码。@xyious我不知道如何规划数据库。如果我需要一些id来引用消息。我是怎么做到的?老实说,我不确定问题到底是什么。你需要数据库设计方面的帮助吗(谷歌数据库设计教程)?让SQLite工作有问题吗(谷歌SQLite教程)?@xyious这是关于数据库设计的。我不是英国人。我以前用几个名字搜索过它,但没有找到我要找的东西。有时我相信我被父母从家里赶走了。谢谢。@xyious我是一名业余爱好者和学生。我觉得使用SQlite很好,因为它工作得很快。让我试试。谢谢你能给我解释一下密码散列和盐吗??用于基于C/C++的程序。我正在互联网上读一些东西,但如果你们有一些资料,请告诉我,我还想要原始的源代码实现。解释一下:我正在测试我的开发人员技能,试图自己编写和理解整个源代码。我试着自己写所有的东西。如果我不能,我会选择一个图书馆。我没有设置图书馆的经验。谢谢
--DROP TABLE IF EXISTS accounts;
--DROP TABLE IF EXISTS users;
--DROP TABLE IF EXISTS messages;
CREATE TABLE IF NOT EXISTS accounts (id INTEGER PRIMARY KEY, user_reference INTEGER, account_number INTEGER, account_name TEXT, account_balance);
CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, user_number INTEGER, user_name TEXT, user_hash TEXT, user_salt TEXT);
CREATE TABLE IF NOT EXISTS messages (id INTEGER PRIMARY KEY, sender INTEGER, receiver INTEGER, timestamp INTEGER DEFAULT CURRENT_TIMESTAMP, message_text TEXT);
INSERT INTO "users" VALUES(null,7,'James Bond','see hashing','see salt');
INSERT INTO "users" VALUES(null,8,'A N otherAgent','see hashing','see salt');
INSERT INTO "users" VALUES(null,9,'Fred Bloggs','see hashing','see salt');
INSERT INTO "accounts" VALUES(null,1,1,'Savings Account',125000);
INSERT INTO "accounts" VALUES(null,2,16,'Savings Account',25000);
INSERT INTO "accounts" VALUES(null,3,24,'Extra Special Savings Account',32000);
INSERT INTO "accounts" VALUES(null,1,24,'Daily Account',1234);
INSERT INTO "accounts" VALUES(null,3,63,'Daily Account',-75);
INSERT INTO "accounts" VALUES(null,3,63,'HomeSaver',30000);
INSERT INTO "messages" VALUES(null,1,2,null,'Message 1');
INSERT INTO "messages" VALUES(null,1,3,null,'Another message');
INSERT INTO "messages" VALUES(null,3,1,null,'response to Another message');
INSERT INTO "messages" VALUES(null,2,3,null,'message from 2 to 3');
INSERT INTO "messages" VALUES(null,3,2,null,'Message from 3 to 2');
--Account Balances per user
SELECT user_name, sum(account_balance)
FROM accounts
LEFT JOIN users ON user_reference = users.id
GROUP BY user_reference;
-- Messages Received
SELECT 'MESSAGE T0: ' || msgreceiver.user_name || ' MESSAGE FROM: ' || msgsender.user_name || ' - SAYING - ' || message_text AS msg
FROM messages
LEFT JOIN users AS msgsender ON messages.sender = msgsender.id
LEFT JOIN users AS msgreceiver ON messages.receiver = msgreceiver.id
WHERE receiver = 3