Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 定义一个SQlite数据库,该数据库支持登录和消息,以及有关用户的数据_C++_Mysql_Sqlite - Fatal编程技术网

C++ 定义一个SQlite数据库,该数据库支持登录和消息,以及有关用户的数据

C++ 定义一个SQlite数据库,该数据库支持登录和消息,以及有关用户的数据,c++,mysql,sqlite,C++,Mysql,Sqlite,我正在建立一个类似玩具银行的系统。我需要一些方法来存储用户名和密码。存储一些关于每个用户的数据,如姓名、地址等。我还想让它能够存储用户提交的消息,并将它们显示给其他用户 我应该如何定义SQlITE表 我有一点想法 用户表 账目表 消息表 谢谢。第一点,SQLite可能不是最合适的选择,也许你已经读过了 以下是一些示例SQL,可以帮助您设计数据库:- 块1-创建表 注释 前3条语句删除了允许重新定义的表,您通常不会包含它们,因此它们已被注释掉 user\u hash和user\u salt列用

我正在建立一个类似玩具银行的系统。我需要一些方法来存储用户名和密码。存储一些关于每个用户的数据,如姓名、地址等。我还想让它能够存储用户提交的消息,并将它们显示给其他用户

我应该如何定义SQlITE表

我有一点想法

用户表 账目表 消息表


谢谢。

第一点,SQLite可能不是最合适的选择,也许你已经读过了

以下是一些示例SQL,可以帮助您设计数据库:-


块1-创建表 注释

  • 前3条语句删除了允许重新定义的表,您通常不会包含它们,因此它们已被注释掉
  • user\u hash和user\u salt列用于用户验证直接存储密码是非常不安全的。您应该调查安全方法

块2-填充用户表:- 注释

  • 添加3个用户
  • 第一个值null允许自动生成id(实际上它只是自动生成的rowid的别名,在表中每行都是unqiue)
块3-填充Accounts表:- 注释 -第二个值1表示第一次插入,第二个值2表示下一次插入,etc表示帐户与用户的链接/关联/关联,即1将用于指向id列为1的用户。 -因此,用户1(詹姆斯·邦德)有2个帐户,用户2(另一个代理)有1个帐户,弗雷德·布洛格斯有3个帐户。 -用户界面将选择适当的引用并管理id的链接

块4-填充消息表:- 注释 -时间戳的第四个参数为null,允许使用默认值,即当前时间戳(请参见上面的创建)

运行上述操作的结果表(一次):-


使用数据或一些选择 方框5-根据注释显示每个用户的余额 结果为:-

  • i、 詹姆斯·邦德有125000+1234=126234等
方框6-显示收到的消息(无特定顺序)
希望这将为您提供一些想法/建议,使您能够开始设计数据库


请永远不要保存密码。@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