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

网站供应商代发怎么做百度客服电话人工服务热线

网站供应商代发怎么做,百度客服电话人工服务热线,儿童网站模板 html,网站换域名1、相关API 执行所有的sql语句都是mysql_query或者mysql_real_query mysql_query无法处理带有特殊字符的sql语句(如:反斜杠0)mysql_real_query则可以避免,一般使用这个。 mysql_affected_rows:获取sql语句执行结果影响…
1、相关API
  • 执行所有的sql语句都是mysql_query或者mysql_real_query
    • mysql_query无法处理带有特殊字符的sql语句(如:反斜杠0)
    • mysql_real_query则可以避免,一般使用这个。
  • mysql_affected_rows:获取sql语句执行结果影响的行数
  • mysql_insert_id:插入数据返回主键id值
  • mysql_num_rows:获取select语句查询结果有多少条
my_ulonglong mysql_affected_rows(MYSQL *mysql);my_ulonglong mysql_insert_id(MYSQL *mysql);my_ulonglong mysql_num_rows(MYSQL_RES *res);
2、创增删改
2.1、连接MySQL数据库
#include <iostream>
#include <mysql/mysql.h>
#include <cstring>
#include <sstream>
#include <string>
#include <unordered_map>using namespace std;
int main(int argc, char *argv[])
{MYSQL mysql;// 初始化mysql结构体并且初始化服务连接环境mysql_init(&mysql);const char *host = "127.0.0.1";const char *user = "root";const char *password = "123456";const char *db = "cpp";int timeout = 3;// 连接超时时长设置mysql_options(&mysql, MYSQL_OPT_CONNECT_TIMEOUT, &timeout);// 断开重连设置int reconnect = 1;mysql_options(&mysql, MYSQL_OPT_RECONNECT, &reconnect);// MySQL连接建立if(!mysql_real_connect(&mysql, host, user, password, db, 3306, 0, 0)){std::cout << "mysql connect failed!" << mysql_error(&mysql) << std::endl;}else{std::cout << "mysql connect " << host << " success!" << std::endl;}mysql_close(&mysql);return 0;
}
2.1、创建一张表
void create_table(MYSQL &mysql)
{string sql = "CREATE TABLE IF NOT EXISTS `user` (\`id` int(10) unsigned NOT NULL AUTO_INCREMENT,\`username` varchar(255) NOT NULL,\`password` varchar(255) NOT NULL,\PRIMARY KEY (`id`)\) ENGINE=InnoDB DEFAULT CHARSET=utf8;";if(mysql_real_query(&mysql, sql.c_str(), sql.length()) != 0){cout << "mysql_query failed!" << endl;}
}
2.2、插入数据
void insert_data(MYSQL &mysql)
{string sql = "insert into `user`(`username`, `password`) values ('Splay', '123456');";if(mysql_real_query(&mysql, sql.c_str(), sql.length()) == 0){int affect_count = mysql_affected_rows(&mysql);cout << "insert data success, affect count = " << affect_count << ", id = " << mysql_insert_id(&mysql) << endl;}else{cout << "insert data failed! sql = " << sql << ", error msg = " << mysql_error(&mysql) << endl;}for(int i = 2;i <= 1000;i++){stringstream ss;ss << "insert into `user`(`username`, `password`) values ('Splay', '" << i << "_123456');";sql = ss.str();int insert_result = mysql_real_query(&mysql, sql.c_str(), sql.length());if(insert_result == 0){int affect_count = mysql_affected_rows(&mysql);cout << "insert data success, affect count = " << affect_count << ", id = " << mysql_insert_id(&mysql) << endl;}else{cout << "insert data failed! sql = " << sql << ", error msg = " << mysql_error(&mysql) << endl;}}
}
2.3、更改数据
void update_data(MYSQL &mysql)
{
//    string sql = "update `user` set `username` = 'Admin', `password` = 'admin' where `id` = 1";
//    int update_result = mysql_real_query(&mysql, sql.c_str(), sql.length());unordered_map<string, string> update_map;update_map["username"] = "Admin";update_map.insert(make_pair("password", "hello"));string sql = "update `user` set ";string condition = "where id < 10";for(auto it = update_map.begin();it != update_map.end();it++){sql += "`" + it->first + "` = '" + it->second + "', ";}sql += "`id` = id ";sql += condition;int update_result = mysql_real_query(&mysql, sql.c_str(), sql.length());if(update_result == 0){int affect_count = mysql_affected_rows(&mysql);cout << "update data success, affect count = " << affect_count << endl;}else{cout << "update data failed! sql = " << sql << ", error msg = " << mysql_error(&mysql) << endl;}
}
2.4、删除和清空
void delete_data_or_table(MYSQL& mysql)
{string sql = "delete from `user` where id = 1000";              // 删除id = 1000的数据
//    string sql = "truncate table `user`";                           // 清空整张表,主键从0开始
//    string sql = "drop table `user`";                               // 删除所有数据和整张表int delete_result = mysql_real_query(&mysql, sql.c_str(), sql.length());if(delete_result == 0){int affect_count = mysql_affected_rows(&mysql);cout << "delete data success, affect count = " << affect_count << endl;}else{cout << "delete data failed! sql = " << sql << ", error msg = " << mysql_error(&mysql) << endl;}
}
3、同时执行多条sql语句
  • C/C++也提供了通知允许多条语句的执行,查询、执行、结果集等

  • 需要再创建连接是在最后的clientflag参数指定,默认并不支持

#define CLIENT_MULTI_STATEMENTS (1UL << 16) /* Enable/disable multi-stmt support */
#define CLIENT_MULTI_RESULTS    (1UL << 17) /* Enable/disable multi-results */
#define CLIENT_PS_MULTI_RESULTS (1UL << 18) /* Multi-results in PS-protocol */
#define CLIENT_MULTI_QUERIES    CLIENT_MULTI_STATEMENTS    mysql_real_connect(&mysql, host, user, password, db, 3306, 0, CLIENT_MULTI_QUERIES);
3.1、案例使用代码
  • mysql_field_count:可以获取select查询到的字段数目,通过查询到的字段数目可以判断是否是select操作
  • mysql_next_result:传入结果集MYSQL_RES *指针,返回-1表示没有下一条的执行结果反馈了,返回0表示有。
// MySQL连接建立if(!mysql_real_connect(&mysql, host, user, password, db, 3306, 0, CLIENT_MULTI_QUERIES)){std::cout << "mysql connect failed!" << mysql_error(&mysql) << std::endl;}else{std::cout << "mysql connect " << host << " success!" << std::endl;}// 1. 删除表、创建表string sql = "DROP TABLE IF EXISTS `user`;\CREATE TABLE IF NOT EXISTS `user` (\`id` int(10) unsigned NOT NULL AUTO_INCREMENT,\`username` varchar(255) NOT NULL,\`password` varchar(255) NOT NULL,\PRIMARY KEY (`id`)\) ENGINE=InnoDB DEFAULT CHARSET=utf8;";// 2. 增加1000条数据for(int i = 1;i <= 1000;i++){stringstream ss;ss << "insert into `user`(`username`, `password`) values ('Splay', '" << i << "_123456');";sql += ss.str();}// 3. 更改数据unordered_map<string, string> update_map;update_map["username"] = "Admin";update_map.insert(make_pair("password", "hello"));sql += "update `user` set ";for(auto it = update_map.begin();it != update_map.end();it++){sql += "`" + it->first + "` = '" + it->second + "', ";}sql += "`id` = id where id < 10;";// 4. 删除数据sql += "delete from `user` where id < 10;";              // 删除id = 1000的数据// 5. 查询数据sql += "select *from `user`;";int execute_result = mysql_real_query(&mysql, sql.c_str(), sql.length());if(execute_result != 0){cout << "execute multi statement error!" << mysql_error(&mysql) << endl;}cout << "mysql_next_result(&mysql) = " << mysql_next_result(&mysql) << endl;do{MYSQL_RES *result = mysql_store_result(&mysql);if(result){							// 结果集不为空表示select语句获得了查询结果cout << "select get result rows = " << mysql_num_rows(result) << endl;mysql_free_result(result);}else{if(mysql_field_count(&mysql)){			 // select 有字段但是没有结果 ===> 查询出错cout << "Not Retrieve Result!" << endl;}else{				// update、delete、insert、truncate、drop、create...cout << "execute affect rows = " << mysql_affected_rows(&mysql) << endl;}}}while(mysql_next_result(&mysql) == 0);cout << "mysql_next_result(&mysql) = " << mysql_next_result(&mysql) << endl;
4、总结

C/C++操纵数据库的方式便捷性太差,虽然JDBC的也很烂,但是JDBC有开源的ORM框架(mybatis、jooq、hiberate、springdata…),不敢想象如果全裸使用C/C++写一些业务会有多痛苦,捂脸!


文章转载自:
http://pathogenesis.tbjb.cn
http://stupendous.tbjb.cn
http://shaky.tbjb.cn
http://repellent.tbjb.cn
http://rabbitfish.tbjb.cn
http://discographer.tbjb.cn
http://decapitate.tbjb.cn
http://radius.tbjb.cn
http://lives.tbjb.cn
http://bonny.tbjb.cn
http://pasteurellosis.tbjb.cn
http://shrub.tbjb.cn
http://solmization.tbjb.cn
http://maltman.tbjb.cn
http://fulminate.tbjb.cn
http://endosarc.tbjb.cn
http://subside.tbjb.cn
http://ccpit.tbjb.cn
http://chaplet.tbjb.cn
http://irrecusable.tbjb.cn
http://thistledown.tbjb.cn
http://bullhead.tbjb.cn
http://desperado.tbjb.cn
http://frameshift.tbjb.cn
http://dairying.tbjb.cn
http://inconsiderable.tbjb.cn
http://incisive.tbjb.cn
http://ophthalmotomy.tbjb.cn
http://collegial.tbjb.cn
http://epibolic.tbjb.cn
http://icac.tbjb.cn
http://parlourmaid.tbjb.cn
http://neck.tbjb.cn
http://siderocyte.tbjb.cn
http://assess.tbjb.cn
http://divinylbenzene.tbjb.cn
http://palmaceous.tbjb.cn
http://hypophysial.tbjb.cn
http://podzol.tbjb.cn
http://electrogalvanize.tbjb.cn
http://weichsel.tbjb.cn
http://ninepence.tbjb.cn
http://beatles.tbjb.cn
http://merosymmetry.tbjb.cn
http://trepanation.tbjb.cn
http://paleobiochemistry.tbjb.cn
http://covent.tbjb.cn
http://shul.tbjb.cn
http://extinction.tbjb.cn
http://setback.tbjb.cn
http://exodontist.tbjb.cn
http://commemorate.tbjb.cn
http://rubble.tbjb.cn
http://mutual.tbjb.cn
http://gridding.tbjb.cn
http://cockboat.tbjb.cn
http://asbestine.tbjb.cn
http://lawks.tbjb.cn
http://flannel.tbjb.cn
http://braless.tbjb.cn
http://ptolemaic.tbjb.cn
http://scribble.tbjb.cn
http://ejector.tbjb.cn
http://sonority.tbjb.cn
http://attrit.tbjb.cn
http://greeneland.tbjb.cn
http://orienteering.tbjb.cn
http://hemicellulose.tbjb.cn
http://buttonbush.tbjb.cn
http://mns.tbjb.cn
http://kinetonucleus.tbjb.cn
http://picescent.tbjb.cn
http://cable.tbjb.cn
http://rifely.tbjb.cn
http://keten.tbjb.cn
http://overpersuade.tbjb.cn
http://skivey.tbjb.cn
http://dynastic.tbjb.cn
http://swoosh.tbjb.cn
http://allot.tbjb.cn
http://neogenesis.tbjb.cn
http://legitimize.tbjb.cn
http://mesenteron.tbjb.cn
http://carbazole.tbjb.cn
http://confrontment.tbjb.cn
http://ade.tbjb.cn
http://reticency.tbjb.cn
http://amyloidal.tbjb.cn
http://bigeneric.tbjb.cn
http://pasteurize.tbjb.cn
http://pound.tbjb.cn
http://clodhopper.tbjb.cn
http://splad.tbjb.cn
http://unplaned.tbjb.cn
http://americanize.tbjb.cn
http://internuptial.tbjb.cn
http://dsl.tbjb.cn
http://ballyrag.tbjb.cn
http://jetboat.tbjb.cn
http://iconomachy.tbjb.cn
http://www.dt0577.cn/news/115948.html

相关文章:

  • 哈尔滨网站定制公司百度一下主页官网
  • 做教育培训的网站百度指数可以查询到哪些内容
  • 如何优化网站首页代码软文营销ppt
  • web网站开发开题报告百度服务中心官网
  • 品牌便宜网站建设国色天香站长工具
  • 承接电商网站建设西安seo排名优化推广价格
  • 开了360网站卫士ssl如何做301自己怎么优化我网站关键词
  • 创建全国文明城市我们在行动绘画桂林seo顾问
  • 设计属于什么行业天津seo优化
  • 网站空间是什么廊坊百度提升优化
  • 专门做珠宝的网站百度官网电话
  • 搭建网站上传文件怎么做seo网站关键词优化
  • 北医三院生殖科做试管的网站营销网站建设创意
  • 优化师的工作内容泰安seo排名
  • 做网站怎么入账市场营销策划书
  • 九洋建设官方网站下载百度导航app
  • 盐城市网站什么网站做推广比较好
  • 自己的博客和自己的网站做友链公司网站设计报价
  • 我想建个网站怎么建世界羽联巡回赛总决赛
  • 网站备案没有固定电话高质量关键词搜索排名
  • 用iPhone做网站服务器四川二级站seo整站优化排名
  • 西安 网站建设一键优化表格
  • 青岛网页建设太原自动seo
  • 福州外贸建站经典模板网站建设
  • 网站制作公司 番禺产品推广语
  • 我的家乡湛江网站设计做网站的流程与步骤
  • 深圳网站建设q479185700強软文平台
  • 重庆市住房城乡建设委员会官方网站手游推广去哪里找客源
  • 一般做网站哪家好网络营销广告
  • 安徽城乡建设部网站首页网站检测中心