当前位置: 首页 > news >正文

网站模板 招聘电子商务系统的构成

网站模板 招聘,电子商务系统的构成,网页设计个人总结,wordpress图片主题免费目录 1 数据库基本知识 1.1 MYSQL常见命令 1.2 SQL注入 1.3 ORM框架 1 数据库基本知识 MySQL 为关系型数据库(Relational Database Management System), 这种所谓的关系型可以理解为表格的概念, 一个关系型数据库由一个或数个表格组成#xff1a…目录 1 数据库基本知识 1.1 MYSQL常见命令 1.2 SQL注入 1.3 ORM框架 1 数据库基本知识 MySQL 为关系型数据库(Relational Database Management System), 这种所谓的关系型可以理解为表格的概念, 一个关系型数据库由一个或数个表格组成 数据库: 数据库是一些关联表的集合。数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。行一行元组或记录是一组相关的数据例如一条用户订阅的数据。冗余存储两倍数据冗余降低了性能但提高了数据的安全性。主键主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。外键外键用于关联两个表。复合键复合键组合键将多个列作为一个索引键一般用于复合索引。索引使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件目的是保证数据的一致性。 1.1 MYSQL常见命令 1.连接mysqlmysql -u root -p***** 2.创建数据库create DTATBASE myDB /* CREATE DATABASE mydatabase -- 创建名为 mydatabase 的数据库CHARACTER SET utf8mb4 -- 设置字符集为 utf8mb4比utf8高级支持表情字符COLLATE utf8mb4_general_ci; -- 设置校对规则为 utf8mb4_general_ci大小写不敏感 */ /* 如果数据库已经存在执行 CREATE DATABASE 将导致错误。 为了避免这种情况你可以在 CREATE DATABASE 语句中添加 IF NOT EXISTS 子句 CREATE DATABASE IF NOT EXISTS mydatabase; */ 3.删除数据库DROP DATABASE RUNOOB; 4.选择数据库后续操作只针对这个数据库USE database_name;/mysql -u your_username -p -D your_database 5.创建数据表 CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL,email VARCHAR(100) NOT NULL,birthdate DATE,is_active BOOLEAN DEFAULT TRUE ); /* id: 用户 id整数类型自增长作为主键。 username: 用户名变长字符串不允许为空。 email: 用户邮箱变长字符串不允许为空。 birthdate: 用户的生日日期类型。 is_active: 用户是否已经激活布尔类型默认值为 true。 */ 6.删除数据表DROP TABLE [IF EXISTS] table_name; //外键约束如果该表与其他表有外键约束可能需要先删除外键约束或者确保依赖关系被处理好。 7.插入数据 INSERT INTO users (username, email, birthdate, is_active) VALUES(test1, test1runoob.com, 1985-07-10, true),(test2, test2runoob.com, 1988-11-25, false),(test3, test3runoob.com, 1993-05-03, true); 8.查询数据 SELECT column1, column2, ... FROM table_name [WHERE condition] [ORDER BY column_name [ASC | DESC]] [LIMIT number]; 9.更新数据 UPDATE table_name SET column1 value1, column2 value2, ... WHERE condition; /* table_name 是你要更新数据的表的名称。 column1, column2, ... 是你要更新的列的名称。 value1, value2, ... 是新的值用于替换旧的值。 WHERE condition 是一个可选的子句用于指定更新的行。如果省略 WHERE 子句将更新表中的所有行。 */ 20.删除数据 DELETE FROM table_name WHERE condition; /* table_name 是你要删除数据的表的名称。 WHERE condition 是一个可选的子句用于指定删除的行。如果省略 WHERE 子句将删除表中的所有行。 */ 21.LIKE子句用于在 WHERE 子句中进行模糊匹配的关键字。它通常与通配符%一起使用用于搜索符合某种模式的字符串 SELECT column1, column2, ... FROM table_name WHERE column_name LIKE pattern; 22.UNION操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合并去除重复的行。 SELECT column1, column2, ... FROM table1 WHERE condition1 UNION SELECT column1, column2, ... FROM table2 WHERE condition2 [ORDER BY column1, column2, ...]; 23.ORDER BY(排序) 语句按照一个或多个列的值进行升序ASC或降序DESC排序。 SELECT column1, column2, ... FROM table_name ORDER BY column1 [ASC | DESC], column2 [ASC | DESC], ...; 1.2 SQL注入 所谓 SQL 注入就是通过把 SQL 命令插入到 Web 表单递交或输入域名或页面请求的查询字符串最终达到欺骗服务器执行恶意的 SQL 命令。 MySQL 注入是指攻击者通过恶意构造的输入成功地执行恶意的 SQL 查询这通常发生在用户输入未经适当验证或转义的情况下攻击者试图在输入中插入 SQL 代码以执行意外的查询或破坏数据库。 例如用户输入 SELECT * FROM users WHERE username input_username AND password input_password; //如果没有正确的输入验证和防范措施攻击者可以输入类似于以下内容的用户名OR 11; -- // 在这种情况下SQL 查询会变成 SELECT * FROM users WHERE username OR 11; -- AND password input_password; //这会使查询返回所有用户因为 11 总是为真注释符号 -- 用于注释掉原始查询的其余部分以确保语法正确。 防止SQL注入的方法 使用参数化查询或预编译语句 使用参数化查询Prepared Statements可以有效防止 SQL 注入因为它们在执行查询之前将输入数据与查询语句分离。输入验证和转义 对用户输入进行适当的验证并使用合适的转义函数如mysqli_real_escape_string来处理输入以防止恶意注入。最小权限原则 给予数据库用户最小的权限确保它们只能执行必要的操作以降低潜在的损害。使用ORM框架 使用对象关系映射ORM框架如Hibernate、Sequelize可以帮助抽象 SQL 查询从而降低 SQL 注入的风险。禁用错误消息显示 在生产环境中禁用显示详细的错误消息以防止攻击者获取有关数据库结构的敏感信息。 1.3 ORM框架 对象关系映射Object Relational Mapping简称ORM模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。ORM框架是连接数据库的桥梁只要提供了持久化类与表的映射关系ORM框架在运行时就能参照映射文件的信息把对象持久化到数据库中。 也就是将数据库的一张表映射为一个类表的字段就是这个类的成员变量。 为什么使用ORM 其一可以有效防止SQL注入其二可以实现业务层和数据层的解耦在实现数据库CRUD操作过程中存在大量重复的SQL语句调用类对象的方法可以有效减少重复性代码。 优点 1提高开发效率降低开发成本 2使开发更加对象化 3可移植 4可以很方便地引入数据缓存之类的附加功能 缺点 1自动化进行关系数据库的映射需要消耗系统性能一般来说都可以忽略。 2在处理多表联查、where条件复杂之类的查询时ORM的语法会变得复杂。 示例 db.cpp定义数据库连接、更新、查询操作 user.hpp定义表字段 usermodel.cpp实现表具体操作。 #includedb.h #includemuduo/base/Logging.h //数据库配置信息 static string server 127.0.0.1; static string user root; static string password 123456; static string dbname chat;//初始化数据库连接为连接开辟资源 MySQL::MySQL() {_conn mysql_init(nullptr); }//释放数据库连接资源 MySQL::~MySQL() {if(_conn!nullptr){mysql_close(_conn);} }//连接数据库 bool MySQL::connect() {MYSQL *p mysql_real_connect(_conn, server.c_str(), user.c_str(), password.c_str(),dbname.c_str(), 3306, nullptr, 0);if (p ! nullptr){// C和C代码默认的编码字符是ASCII如果不设置从Mysql上拉取的数据不支持汉字mysql_query(_conn, set names gbk);LOG_INFO connect mysql success!;}else{LOG_INFO connect mysql fail!;}return p; }//更新操作 bool MySQL::update(string sql) {if (mysql_query(_conn, sql.c_str())){LOG_INFO __FILE__ : __LINE__ : sql 更新失败;return false;}return true; }//查询操作 MYSQL_RES* MySQL::query(string sql) {if (mysql_query(_conn, sql.c_str())){LOG_INFO __FILE__ : __LINE__ : sql 查询失败;return nullptr;}return mysql_use_result(_conn); }//获取连接 MYSQL *MySQL::getConnection() {return _conn; } #ifndef USER_H #define USER_H#includestring using namespace std; /* mysql SHOW COLUMNS FROM user; ------------------------------------------------------------------------ | Field | Type | Null | Key | Default | Extra | ------------------------------------------------------------------------ | id | int | NO | PRI | NULL | auto_increment | | username | varchar(50) | NO | UNI | NULL | | | password | varchar(50) | NO | | NULL | | | state | enum(online,offline) | YES | | offline | | ------------------------------------------------------------------------ */ //定义数据库对象将数据库信息整合为一个对象提交给业务层 //匹配User表的ORM类 class User{ public:User(int id -1, string name , string pwd , string state offline){this-id id;this-name name;this-password pwd;this-state state;}void setId(int id){this-id id;}void setName(string name){this-name name;}void setPwd(string pwd){this-password pwd;}void setState(string state){this-state state;}int getId(){return this-id;}string getName(){return this-name;}string getPwd(){return this-password;}string getState(){return this-state;} private:int id;string name;string password;string state; }; #endif #includeusermodel.hpp #includedb.h #includeiostream #includemuduo/base/Logging.h using namespace std; //User表的增加方法 bool UserModel::insert(User user) {//1. 组成sql语句char sql[1024] {0};sprintf(sql, insert into user(username,password,state) values(%s, %s, %s),user.getName().c_str(), user.getPwd().c_str(), user.getState().c_str());LOG_INFOsql;//2.连接数据库MySQL mysql;if (mysql.connect()){if(mysql.update(sql)){//获取插入成功的用户数据生成的主键iduser.setId(mysql_insert_id(mysql.getConnection()));return true;}}return false; }
http://www.dnsts.com.cn/news/192390.html

相关文章:

  • 装饰网站建设软件下载维护网站英语
  • 滨海新区做网站网站名称可以是域名
  • 像饿了码的网站建站有吗国外自建站怎么样
  • o2o分销系统网站建设wordpress title description
  • 电影网站怎么制作网站做一半能退吗
  • 学院网站建设项目的成本计划书做网站的个人总结
  • 做h5免费的网站有建设工程施工合同范文
  • 网站空间续费多少钱wordpress文章统计
  • 建设工程造价管理协会网站安阳县实验中学
  • 营销型官方网站国外包装设计欣赏网站
  • 网站建设一般用什么编程怎么做网站教程html文本文档
  • 东坝地区网站建设wordpress selva
  • 江西省宜春市建设局网站古典风格中药医药企业网站模板源码
  • 国外网站源代码网站营销成功的案例
  • 铜陵网站建设关于网站的制作
  • 表白网站在线制作软件徐州建站网页建设
  • 江西核工业建设有限公司网站优质的seo快速排名优化
  • 益阳高端网站建设南京营销型网站建设
  • 网络营销研究现状文献综述seo推广优化收费
  • 网站开发时间利用影视网站做cpa
  • 网站界面需求百度网页制作网站建设
  • 建网站金坛哪家强?简单动画制作
  • 石家庄站布局图wordpress国外模板下载
  • 嘉兴 做网站 推广直播网站建设模板
  • 苏州市建设中心网站首页wordpress 按钮样式
  • 保定网站建设制作服务信息网络安全
  • 珠海市横琴新区建设环保局网站永久免费crm都有什么
  • 济南正规网站制作怎么选择自媒体策划哪里公司最好
  • 圣辉友联北京网站建设公司三网合一网站开源
  • 深圳创建网站我国外贸企业网站建设