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

佛山外贸网站建设网站建设所需硬件

佛山外贸网站建设,网站建设所需硬件,自己做网站用买域名吗,广州一建建设集团本文介绍了一个基于 C、SQLite 和 Boost 库的简单交互式数据库操作 Shell。该 Shell 允许用户通过命令行输入执行各种数据库操作#xff0c;包括添加、删除主机信息#xff0c;设置主机到特定主机组#xff0c;以及显示主机和主机组列表。通过调用 SQLite3 库实现数据库连接…本文介绍了一个基于 C、SQLite 和 Boost 库的简单交互式数据库操作 Shell。该 Shell 允许用户通过命令行输入执行各种数据库操作包括添加、删除主机信息设置主机到特定主机组以及显示主机和主机组列表。通过调用 SQLite3 库实现数据库连接和操作以及使用 Boost 库进行字符串解析和格式化。该交互式 Shell 提供了一些基本的命令使用户能够方便地管理主机信息和组织结构。代码结构清晰易于理解可根据需要扩展和定制功能。 数据库的基本使用方法请看《C/C 通过SQLiteSDK增删改查》这篇文章针对如何使用Boost解析命令行参数请看《4.9 C Boost 命令行解析库》这篇文章此处只给出实现代码如下所示 #define _CRT_SECURE_NO_WARNINGS #include iostream #include string #include map #include vector #include time.h #include sqlite3.h#include boost/format.hpp #include boost/tokenizer.hpp #include boost/lexical_cast.hppusing namespace std; using namespace boost;sqlite3* open_database(std::string database_name) {int ref -1;sqlite3 *db 0;ref sqlite3_open(database_name.c_str(), db);if (ref SQLITE_OK)return db;return false; } bool close_database(sqlite3 *db) {int ref sqlite3_close(db);if (ref SQLITE_OK)return true;return false; } bool exec_sql(sqlite3 *db, char *sql) {char *error_code 0;int ref sqlite3_exec(db, sql, 0, 0, error_code);if (ref SQLITE_OK){return true;}return false; }// 初始化创建表结构 void Init_Database() {sqlite3* open_db open_database(./database.db);if (open_db ! false){std::string sql create table HostDB(uid primary key,host_address char(128) not null,host_username char(128) not null,host_password char(128) not null,host_port char(128) not null,host_group char(128) not null default DefaultGroup);;char run_sql[1024] { 0 };strcpy(run_sql, sql.c_str());exec_sql(open_db, run_sql);}close_database(open_db); }// 增加一条主机记录 void AddHost_DB(sqlite3* open_db, std::string address, std::string username, std::string password, std::string port) {std::string format_string boost::str(boost::format(insert into HostDB(host_address,host_username,host_password,host_port) values(%s,%s,%s,%s);) % address %username %password %port);char run_sql[2048] { 0 };strcpy(run_sql, format_string.c_str());bool ref exec_sql(open_db, run_sql);if (ref true){std::cout [] 增加主机: address 完成 std::endl;} }// 删除特定主机记录 void DeleteHost_DB(sqlite3 *open_db, std::string address) {std::string format_string boost::str(boost::format(delete from HostDB where host_address %s;) % address);char run_sql[2048] { 0 };strcpy(run_sql, format_string.c_str());bool ref exec_sql(open_db, run_sql);if (ref true){std::cout [-] 删除主机: address 完成 std::endl;} }// 将特定主机加入到特定主机组 void SetHostGroup_DB(sqlite3* open_db, std::string address, std::string group_name) {std::string format_string boost::str(boost::format(update HostDB set host_group%s where host_address %s;) % group_name %address);char run_sql[2048] { 0 };strcpy(run_sql, format_string.c_str());bool ref exec_sql(open_db, run_sql);if (ref true){std::cout [] 主机: address 已加入到: group_name 组 std::endl;} }// 输出所有主机组 void ShowHostGroup_DB(sqlite3 *open_db) {sqlite3_stmt *stmt 0;// std::string format_string SELECT distinct(host_group) FROM HostDB;;std::string format_string SELECT host_group,count(*) FROM HostDB GROUP BY host_group;;char run_sql[1024] { 0 };strcpy(run_sql, format_string.c_str());int ref sqlite3_prepare_v2(open_db, run_sql, -1, stmt, 0);if (ref SQLITE_OK){while (sqlite3_step(stmt) SQLITE_ROW){const unsigned char *host_group sqlite3_column_text(stmt, 0);int host_group_count sqlite3_column_int(stmt, 1);std::cout host_group host_group_count std::endl;}}sqlite3_finalize(stmt); }// 输出所有主机 void ShowHost_DB(sqlite3 *open_db) {sqlite3_stmt *stmt 0;std::string format_string select * from HostDB;;char run_sql[1024] { 0 };strcpy(run_sql, format_string.c_str());int ref sqlite3_prepare_v2(open_db, run_sql, -1, stmt, 0);if (ref SQLITE_OK){while (sqlite3_step(stmt) SQLITE_ROW){const unsigned char *host_address sqlite3_column_text(stmt, 1);const unsigned char *host_username sqlite3_column_text(stmt, 2);const unsigned char *host_paddword sqlite3_column_text(stmt, 3);const unsigned char *host_port sqlite3_column_text(stmt, 4);const unsigned char *host_group sqlite3_column_text(stmt, 5);std::cout host_address host_username host_paddword host_port host_group std::endl;}}sqlite3_finalize(stmt); }// 输出特定主机组中的主机 void ShowGroupHostList(sqlite3 *open_db, std::string group_name) {sqlite3_stmt *stmt 0;std::string format_string boost::str(boost::format(select * from HostDB where host_group %s;) % group_name);char run_sql[2048] { 0 };strcpy(run_sql, format_string.c_str());int ref sqlite3_prepare_v2(open_db, run_sql, -1, stmt, 0);if (ref SQLITE_OK){std::cout ---------------------------------------------------------- std::endl;std::cout 主机组: group_name std::endl;std::cout ---------------------------------------------------------- std::endl;while (sqlite3_step(stmt) SQLITE_ROW){const unsigned char *host_address sqlite3_column_text(stmt, 1);const unsigned char *host_username sqlite3_column_text(stmt, 2);const unsigned char *host_port sqlite3_column_text(stmt, 4);std::cout host_address host_username host_port std::endl;}}sqlite3_finalize(stmt); }int main(int argc, char const *argv[]) {sqlite3* open_db open_database(./database.db);Init_Database();std::string command;while (1){std::cout [ LyShark Shell ] # ;std::getline(std::cin, command);if (command.length() 0){continue;}else if (command help){std::cout 帮助菜单 std::endl;}else{boost::char_separatorchar sep(, --);typedef boost::tokenizerboost::char_separatorchar CustonTokenizer;CustonTokenizer tok(command, sep);std::vectorstd::string vecSegTag;for (CustonTokenizer::iterator beg tok.begin(); beg ! tok.end(); beg){vecSegTag.push_back(*beg);}if (vecSegTag.size() 9 vecSegTag[0] AddHost){if (vecSegTag[1] address vecSegTag[3] username vecSegTag[5] password vecSegTag[7] port){std::string set_address vecSegTag[2];std::string set_username vecSegTag[4];std::string set_password vecSegTag[6];std::string set_port vecSegTag[8];AddHost_DB(open_db, set_address, set_username, set_password, set_port);}}else if (vecSegTag.size() 3 vecSegTag[0] DeleteHost){if (vecSegTag[1] address){std::string set_address vecSegTag[2];DeleteHost_DB(open_db, set_address);}}else if (vecSegTag.size() 5 vecSegTag[0] SetHostGroup){if (vecSegTag[1] address vecSegTag[3] group){std::string set_address vecSegTag[2];std::string set_group vecSegTag[4];SetHostGroup_DB(open_db, set_address, set_group);}}else if (vecSegTag.size() 1 vecSegTag[0] ShowHost){std::cout ----------------------------------------------------------------------------- std::endl;std::cout IP地址 用户名 密码 端口号 默认组 std::endl;std::cout ----------------------------------------------------------------------------- std::endl;ShowHost_DB(open_db);}else if (vecSegTag.size() 1 vecSegTag[0] ShowHostGroup){std::cout ----------------------------------------------------------------------------- std::endl;std::cout 主机组名 主机数量 std::endl;std::cout ----------------------------------------------------------------------------- std::endl;ShowHostGroup_DB(open_db);}else if (vecSegTag.size() 3 vecSegTag[0] ShowGroupHostList){if (vecSegTag[1] group){std::string set_group vecSegTag[2];ShowGroupHostList(open_db, set_group);}}}}close_database(open_db);return 0; }添加主机记录: AddHost --address 192.168.1.1 --username root --password 1233 --port 22 删除主机记录: DeleteHost --address 192.168.1.1 将特定主机设置到主机组: SetHostGroup --address 192.168.1.1 --group WebServer 输出所有主机列表: ShowHost 输出所有主机组: ShowHostGroup 输出特定主机组中的主机: ShowGroupHostList --group DefaultGroup
http://www.yutouwan.com/news/499235/

相关文章:

  • 站长交易网劳务公司注册流程和费用
  • 网站建设在未来的发展趋势工商注册名字查询系统
  • 萝岗免费网站建设手机在线网站建设
  • 西安知名网站制作公司wordpress支付看文章
  • 山东住房和城乡建设厅网站一体化平台国内免费无版权视频素材网站
  • 手机网站开发流程图黄页引流推广
  • 潍坊做网站的电话音乐 wordpress
  • 怎么修改别人做的网站百度网站推广公司
  • 兰州网站优化公司网页界面设计公司
  • 建设部网站的诚信平台网站开发前端和后端怎么连接
  • 连锁店网站建设wordpress视频分享
  • 网站名称和备案名称不一样陕西省建设网官网
  • 有专业设计网站吗媒体代发布
  • 做网站 不做源码wordpress 自动添加标签
  • 网站做缓存吗wordpress 上传mp4
  • 公司企业网站wordpress上传exe
  • 门户网站代码网站建设目录
  • 网科创想网站管理专业seo网络推广
  • 中国平面设计网站零基础学wordpress课件
  • 网站建设五站合一wordpress的搜索
  • 网站建设微信开发wordpress对接码支付教程
  • ai可以用来做网站吗网站备案地址查询
  • 建设银行网站注销镇江建设银行网站
  • 交友高端网站建设专门做水生植物销售网站
  • 苏州网联盛网站建设开公众号的流程
  • 河南公司网站制作咨询没有备案做盈利性的网站违法吗
  • 南通网站建设公司排名网站对接qq群 虚拟主机
  • 罗湖网站定制wordpress游戏网站
  • 佛山做企业网站公司滨州j建设局网站投诉电话
  • 网站支付接口如何做北京电商网站建设