时间:2021-07-01 10:21:17 帮助过:30人阅读
增:
- <span style="color: #0000ff">bool</span> MySQL::Insert(<span style="color: #0000ff">string</span> table, map<<span style="color: #0000ff">string</span>, <span style="color: #0000ff">string</span>><span style="color: #000000"> values)
- {
- sql.clear();
- </span><span style="color: #0000ff">if</span> (values.size() == <span style="color: #800080">0</span><span style="color: #000000">)
- {
- cout </span><< <span style="color: #800000">"</span><span style="color: #800000">Input Error!!!</span><span style="color: #800000">"</span> <<<span style="color: #000000"> endl;
- </span><span style="color: #0000ff">return</span> <span style="color: #0000ff">false</span><span style="color: #000000">;
- }
- </span><span style="color: #0000ff">else</span><span style="color: #000000">
- {
- sql </span>= <span style="color: #800000">"</span><span style="color: #800000">INSERT INTO </span><span style="color: #800000">"</span> + table + <span style="color: #800000">"</span><span style="color: #800000">(</span><span style="color: #800000">"</span><span style="color: #000000">;
- auto iter </span>=<span style="color: #000000"> values.begin();
- </span><span style="color: #0000ff">while</span> (iter !=<span style="color: #000000"> values.end())
- {
- sql </span>+= iter->first + <span style="color: #800000">‘</span><span style="color: #800000">,</span><span style="color: #800000">‘</span><span style="color: #000000">;
- iter</span>++<span style="color: #000000">;
- }
- sql </span>= sql.substr(<span style="color: #800080">0</span>, sql.rfind(<span style="color: #800000">‘</span><span style="color: #800000">,</span><span style="color: #800000">‘</span>)) + <span style="color: #800000">"</span><span style="color: #800000">) VALUES(</span><span style="color: #800000">"</span><span style="color: #000000">;
- iter </span>=<span style="color: #000000"> values.begin();
- </span><span style="color: #0000ff">while</span> (iter !=<span style="color: #000000"> values.end())
- {
- sql </span>+= <span style="color: #0000ff">string</span>(<span style="color: #800000">"</span><span style="color: #800000">\"</span><span style="color: #800000">"</span>) + iter->second + <span style="color: #800000">"</span><span style="color: #800000">\",</span><span style="color: #800000">"</span><span style="color: #000000">;
- iter</span>++<span style="color: #000000">;
- }
- sql </span>= sql.substr(<span style="color: #800080">0</span>, sql.rfind(<span style="color: #800000">‘</span><span style="color: #800000">,</span><span style="color: #800000">‘</span>)) + <span style="color: #800000">"</span><span style="color: #800000">);</span><span style="color: #800000">"</span><span style="color: #000000">;
- ret </span>= mysql_query(&<span style="color: #000000">connect, sql.c_str());
- </span><span style="color: #0000ff">if</span> (ret != <span style="color: #800080">0</span><span style="color: #000000">)
- {
- cout </span><< <span style="color: #800000">"</span><span style="color: #800000">mysql query error with </span><span style="color: #800000">"</span> << ret << <span style="color: #800000">"</span><span style="color: #800000"> Reason: </span><span style="color: #800000">"</span> << mysql_error(&connect) <<<span style="color: #000000"> endl;
- </span><span style="color: #0000ff">return</span> <span style="color: #0000ff">false</span><span style="color: #000000">;
- }
- ret </span>= mysql_query(&connect, <span style="color: #800000">"</span><span style="color: #800000">commit</span><span style="color: #800000">"</span><span style="color: #000000">);
- </span><span style="color: #0000ff">return</span> <span style="color: #0000ff">true</span><span style="color: #000000">;
- }
- }</span>
删:
- <span style="color: #0000ff">bool</span> MySQL::Delete(<span style="color: #0000ff">string</span> table, map<<span style="color: #0000ff">string</span>, <span style="color: #0000ff">string</span>><span style="color: #000000"> values)
- {
- sql.clear();
- </span><span style="color: #0000ff">if</span> (values.size() == <span style="color: #800080">0</span><span style="color: #000000">)
- {
- cout </span><< <span style="color: #800000">"</span><span style="color: #800000">Input Error!!!</span><span style="color: #800000">"</span> <<<span style="color: #000000"> endl;
- </span><span style="color: #0000ff">return</span> <span style="color: #0000ff">false</span><span style="color: #000000">;
- }
- </span><span style="color: #0000ff">else</span><span style="color: #000000">
- {
- sql </span>= <span style="color: #800000">"</span><span style="color: #800000">DELETE FROM </span><span style="color: #800000">"</span> + table + <span style="color: #800000">"</span><span style="color: #800000"> WHERE </span><span style="color: #800000">"</span><span style="color: #000000">;
- auto iter </span>=<span style="color: #000000"> values.begin();
- </span><span style="color: #0000ff">while</span> (iter !=<span style="color: #000000"> values.end())
- {
- sql </span>+= iter->first + <span style="color: #800000">"</span><span style="color: #800000"> = </span><span style="color: #800000">"</span> + iter->second + <span style="color: #800000">"</span><span style="color: #800000"> and </span><span style="color: #800000">"</span><span style="color: #000000">;
- iter</span>++<span style="color: #000000">;
- }
- sql </span>= sql.substr(<span style="color: #800080">0</span>, sql.rfind(<span style="color: #800000">"</span><span style="color: #800000">and</span><span style="color: #800000">"</span>)) + <span style="color: #800000">"</span><span style="color: #800000">;</span><span style="color: #800000">"</span><span style="color: #000000">;
- ret </span>= mysql_query(&<span style="color: #000000">connect, sql.c_str());
- </span><span style="color: #0000ff">if</span> (ret != <span style="color: #800080">0</span><span style="color: #000000">)
- {
- cout </span><< <span style="color: #800000">"</span><span style="color: #800000">mysql query error with </span><span style="color: #800000">"</span> << ret << <span style="color: #800000">"</span><span style="color: #800000"> Reason: </span><span style="color: #800000">"</span> << mysql_error(&connect) <<<span style="color: #000000"> endl;
- </span><span style="color: #0000ff">return</span> <span style="color: #0000ff">false</span><span style="color: #000000">;
- }
- ret </span>= mysql_query(&connect, <span style="color: #800000">"</span><span style="color: #800000">commit</span><span style="color: #800000">"</span><span style="color: #000000">);
- </span><span style="color: #0000ff">return</span> <span style="color: #0000ff">true</span><span style="color: #000000">;
- }
- }</span>
改:
- <span style="color: #0000ff">bool</span> MySQL::Update(<span style="color: #0000ff">string</span> table, map<<span style="color: #0000ff">string</span>, <span style="color: #0000ff">string</span>><span style="color: #000000"> values)
- {
- sql.clear();
- </span><span style="color: #0000ff">if</span> (values.size() == <span style="color: #800080">0</span><span style="color: #000000">)
- {
- cout </span><< <span style="color: #800000">"</span><span style="color: #800000">Input Error!!!</span><span style="color: #800000">"</span> <<<span style="color: #000000"> endl;
- </span><span style="color: #0000ff">return</span> <span style="color: #0000ff">false</span><span style="color: #000000">;
- }
- </span><span style="color: #0000ff">else</span><span style="color: #000000">
- {
- sql </span>= <span style="color: #800000">"</span><span style="color: #800000">UPDATE </span><span style="color: #800000">"</span> + table + <span style="color: #800000">"</span><span style="color: #800000"> SET </span><span style="color: #800000">"</span><span style="color: #000000">;
- auto iter </span>=<span style="color: #000000"> values.begin();
- </span><span style="color: #0000ff">while</span> (iter !=<span style="color: #000000"> values.end())
- {
- sql </span>+= iter->first + <span style="color: #800000">"</span><span style="color: #800000"> = \"</span><span style="color: #800000">"</span> + iter->second + <span style="color: #800000">"</span><span style="color: #800000">\" and </span><span style="color: #800000">"</span><span style="color: #000000">;
- iter</span>++<span style="color: #000000">;
- }
- sql </span>= sql.substr(<span style="color: #800080">0</span>, sql.rfind(<span style="color: #800000">"</span><span style="color: #800000">and</span><span style="color: #800000">"</span>)) + <span style="color: #800000">"</span><span style="color: #800000">;</span><span style="color: #800000">"</span><span style="color: #000000">;
- ret </span>= mysql_query(&<span style="color: #000000">connect, sql.c_str());
- </span><span style="color: #0000ff">if</span> (ret != <span style="color: #800080">0</span><span style="color: #000000">)
- {
- cout </span><< <span style="color: #800000">"</span><span style="color: #800000">mysql query error with </span><span style="color: #800000">"</span> << ret << <span style="color: #800000">"</span><span style="color: #800000"> Reason: </span><span style="color: #800000">"</span> << mysql_error(&connect) <<<span style="color: #000000"> endl;
- </span><span style="color: #0000ff">return</span> <span style="color: #0000ff">false</span><span style="color: #000000">;
- }
- ret </span>= mysql_query(&connect, <span style="color: #800000">"</span><span style="color: #800000">commit</span><span style="color: #800000">"</span><span style="color: #000000">);
- </span><span style="color: #0000ff">return</span> <span style="color: #0000ff">true</span><span style="color: #000000">;
- }
- }</span>
查:
- <span style="color: #0000ff">bool</span> MySQL::Select(<span style="color: #0000ff">string</span> table, map<<span style="color: #0000ff">string</span>, <span style="color: #0000ff">string</span>><span style="color: #000000"> values)
- {
- sql.clear();
- </span><span style="color: #0000ff">if</span>(values.size() == <span style="color: #800080">0</span><span style="color: #000000">)
- sql </span>= <span style="color: #800000">"</span><span style="color: #800000">SELECT * FROM </span><span style="color: #800000">"</span> + table + <span style="color: #800000">"</span><span style="color: #800000"> ;</span><span style="color: #800000">"</span><span style="color: #000000">;
- </span><span style="color: #0000ff">else</span><span style="color: #000000">
- {
- sql </span>= <span style="color: #800000">"</span><span style="color: #800000">SELECT * FROM </span><span style="color: #800000">"</span> + table + <span style="color: #800000">"</span><span style="color: #800000"> where </span><span style="color: #800000">"</span><span style="color: #000000">;
- auto iter </span>=<span style="color: #000000"> values.begin();
- </span><span style="color: #0000ff">while</span> (iter !=<span style="color: #000000"> values.end())
- {
- sql </span>+= iter->first + <span style="color: #800000">"</span><span style="color: #800000"> = \"</span><span style="color: #800000">"</span> + iter->second + <span style="color: #800000">"</span><span style="color: #800000">\" and </span><span style="color: #800000">"</span><span style="color: #000000">;
- iter</span>++<span style="color: #000000">;
- }
- sql </span>= sql.substr(<span style="color: #800080">0</span>, sql.rfind(<span style="color: #800000">"</span><span style="color: #800000">and</span><span style="color: #800000">"</span>)) + <span style="color: #800000">"</span><span style="color: #800000">;</span><span style="color: #800000">"</span><span style="color: #000000">;
- }
- ret </span>= mysql_query(&<span style="color: #000000">connect, sql.c_str());
- </span><span style="color: #0000ff">if</span> (ret != <span style="color: #800080">0</span><span style="color: #000000">)
- {
- cout </span><< <span style="color: #800000">"</span><span style="color: #800000">mysql query error with </span><span style="color: #800000">"</span> << ret << <span style="color: #800000">"</span><span style="color: #800000"> Reason: </span><span style="color: #800000">"</span> << mysql_error(&connect) <<<span style="color: #000000"> endl;
- </span><span style="color: #0000ff">return</span> <span style="color: #0000ff">false</span><span style="color: #000000">;
- }
- showDetails(connect);
- </span><span style="color: #0000ff">return</span> <span style="color: #0000ff">true</span><span style="color: #000000">;
- }</span>
自己编写sql语句查询:
- <span style="color: #0000ff">bool</span> MySQL::Query(<span style="color: #0000ff">string</span><span style="color: #000000"> cmd)
- {
- size_t pos </span>= cmd.find(<span style="color: #800000">"</span><span style="color: #800000">select</span><span style="color: #800000">"</span><span style="color: #000000">);
- </span><span style="color: #0000ff">if</span> (pos < <span style="color: #800080">0</span> || pos ><span style="color: #000000"> cmd.size())
- {
- sql </span>=<span style="color: #000000"> cmd;
- ret </span>= mysql_query(&<span style="color: #000000">connect, sql.c_str());
- </span><span style="color: #0000ff">if</span> (ret != <span style="color: #800080">0</span><span style="color: #000000">)
- {
- cout </span><< <span style="color: #800000">"</span><span style="color: #800000">mysql query error with </span><span style="color: #800000">"</span> << ret << <span style="color: #800000">"</span><span style="color: #800000"> Reason: </span><span style="color: #800000">"</span> << mysql_error(&connect) <<<span style="color: #000000"> endl;
- </span><span style="color: #0000ff">return</span> <span style="color: #0000ff">false</span><span style="color: #000000">;
- }
- </span><span style="color: #0000ff">return</span> <span style="color: #0000ff">true</span><span style="color: #000000">;
- }
- </span><span style="color: #0000ff">else</span><span style="color: #000000">
- {
- ret </span>= mysql_query(&<span style="color: #000000">connect, sql.c_str());
- </span><span style="color: #0000ff">if</span> (ret != <span style="color: #800080">0</span><span style="color: #000000">)
- {
- cout </span><< <span style="color: #800000">"</span><span style="color: #800000">mysql query error with </span><span style="color: #800000">"</span> << ret << <span style="color: #800000">"</span><span style="color: #800000"> Reason: </span><span style="color: #800000">"</span> << mysql_error(&connect) <<<span style="color: #000000"> endl;
- </span><span style="color: #0000ff">return</span> <span style="color: #0000ff">false</span><span style="color: #000000">;
- }
- showDetails(connect);
- </span><span style="color: #0000ff">return</span> <span style="color: #0000ff">true</span><span style="color: #000000">;
- }
- }</span>
MySQL执行完查询语句后会返回一个结果集,使用showDetails()函数输出结果集:
- <span style="color: #0000ff">void</span><span style="color: #000000"> MySQL::showDetails(MYSQL connect)
- {
- </span><span style="color: #0000ff">int</span> col = mysql_field_count(&<span style="color: #000000">connect);
- res </span>= mysql_store_result(&<span style="color: #000000">connect);
- </span><span style="color: #0000ff">if</span> (res ==<span style="color: #000000"> NULL)
- {
- cout </span><< <span style="color: #800000">"</span><span style="color: #800000">mysql store result error with </span><span style="color: #800000">"</span> << mysql_error(&connect) <<<span style="color: #000000"> endl;
- exit(</span>-<span style="color: #800080">1</span><span style="color: #000000">);
- }
- fields </span>=<span style="color: #000000"> mysql_fetch_fields(res);
- </span><span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> i = <span style="color: #800080">0</span>; i < col; ++<span style="color: #000000">i)
- cout </span><< setw(<span style="color: #800080">10</span>) << fields[i].name << <span style="color: #800000">"</span><span style="color: #800000"> | </span><span style="color: #800000">"</span><span style="color: #000000">;
- cout </span><<<span style="color: #000000"> endl;
- </span><span style="color: #0000ff">while</span> ((row =<span style="color: #000000"> mysql_fetch_row(res)))
- {
- </span><span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> i = <span style="color: #800080">0</span>; i < col; ++<span style="color: #000000">i)
- {
- </span><span style="color: #0000ff">if</span> (row[i] ==<span style="color: #000000"> NULL)
- cout </span><< setw(<span style="color: #800080">10</span>) << <span style="color: #800000">"</span><span style="color: #800000">NULL | </span><span style="color: #800000">"</span><span style="color: #000000">;
- </span><span style="color: #0000ff">else</span><span style="color: #000000">
- cout </span><< setw(<span style="color: #800080">10</span>) << row[i] << <span style="color: #800000">"</span><span style="color: #800000"> | </span><span style="color: #800000">"</span><span style="color: #000000">;
- }
- cout </span><<<span style="color: #000000"> endl;
- }
- }</span>
完整代码详见GitHub:https://github.com/MasterMeng/MySQLOperate
MySQL增、删、改、查基础操作(C++)
标签:details false end passwd 操作 fetch val 数据库 rate