MYSQL与C
2016-06-26 20:34
411 查看
codeblocks 为32位 与本机所安装64位MYSQL不兼容 所以用VS2015
VS中新建项目 建好后 项目属性--
设置解决方案平台为X64
将MYSQL \lib下的.dll和.lib拷贝到新建项目的X64中的debug下
环境配置完成
此过程中遇到的问题:新建项目时可新建成空文件
printf("0 航班 1 大巴 2 宾馆 \n");
int choice;
cin >> choice;
//char t[256];
//scanf_s("%d", &choice);
//sprintf_s(t, 10, "%d", choice+1);
printf("输入编号:\n");
char key[20];
cin >> key;
//scanf_s("%s", key, 10);
//printf("%s\n", key);
//string s = "";
//s = "insert into reservation157 values(null,\'" + custID + "\'," + t + ",\'" + key + "\')";
//cout << s << endl;
//s.c_str() = (char*)malloc(sizeof(char) * 100);
char* ch=(char*)malloc(sizeof(char)*100) ;
if(choice1 == 2)
sprintf(ch, "insert into reservation157 values(null,'%s','%d','%s');", custID, choice + 1, key);
else if (choice1 == 3)
sprintf(ch, "delete from reservation157 where custID = '%s' and resvKey = '%s' ;", custID, key);
//strcpy_s(ch,s.size()+1, s.c_str());
//stoc(s, ch);
//printf("%s\n", ch);
//return ch;
query_sql(ch);
//cout << s << endl;
}
主要遇到的问题: 1.SQL语句为string类型 string中各部分(不同类型)的拼接
2.string类型转char*类型
3.在reservation()函数中cout正常 在main()函数中也cout正常 但不能正常预订与退订
另附一个转换函数 将int转换为string 需#include<sstream>
string numTostr(int i) {
stringstream ss;
ss << i;
return ss.str();
}
VS中新建项目 建好后 项目属性--
设置解决方案平台为X64
将MYSQL \lib下的.dll和.lib拷贝到新建项目的X64中的debug下
环境配置完成
此过程中遇到的问题:新建项目时可新建成空文件
<span style="font-size:14px;">#include <stdio.h> #include <winsock2.h> #include <mysql.h> #include <stdlib.h> #include<cstring> #include <string> #include <iostream> #include <sstream> /*数据库连接用宏*/ #define HOST "localhost" #define USERNAME "root" #define PASSWORD "1234" #define DATABASE "travel" #define FLIGHT "select * from flights157" #define BUS "select * from bus157" #define HOTEL "select * from hotels157" #define RESERVATION "select * from reservation157" //#define DATABASE "test" //#define INSE "insert into bus157 values(null,'1002',2,'56')" using namespace std; char* custID = (char*)malloc(sizeof(char)*100); int choice1; //string numTostr(int i); //char* reservation(string custID); void reservation(char* custID,int choice1); void options(); void query_sql(char* sql); //char * stoc(string str,char* ch); #pragma warning(disable:4996)//解决不安全报告 int main() { //printf("%s\n", reservation("1002")); //cout << reservation("1002") << endl; options(); //char *query; //query = "insert into reservations157 values ('10','1002',3,'E')"; //query = "insert into bus157 values('90','SHANGHAI',50,25,25)"; //query = "select * from t2 "; //query = "select * from t2"; //query_sql("insert into reservation157 values(null,'1002',2,'12')"); system("pause"); return 0; } //C与MYSQL链接函数 void query_sql(char* sql) { MYSQL my_connection; /*这是一个数据库连接*/ int res; /*执行sql語句后的返回标志*/ MYSQL_RES *res_ptr; /*指向查询结果的指针*/ MYSQL_FIELD *field; /*字段结构指针*/ MYSQL_ROW result_row; /*按行返回的查询信息*/ int row, column; /*查询返回的行数和列数*/ int i, j; /*初始化mysql连接my_connection*/ mysql_init(&my_connection); /*建立mysql连接*/ if (NULL != mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD, DATABASE, 0, NULL, CLIENT_FOUND_ROWS)) /*连接成功*/ { printf("数据库查询query_sql连接成功!\n"); /*设置查询编码为gbk,以支持中文*/ mysql_query(&my_connection, "set names gbk"); res = mysql_query(&my_connection, sql); if (res) /*执行失败*/ { //printf("Error: mysql_query !\n"); /*关闭连接*/ mysql_close(&my_connection); } else /*现在就代表执行成功了*/ { /*将查询的結果给res_ptr*/ res_ptr = mysql_store_result(&my_connection); /*如果结果不为空,就把结果print*/ if (res_ptr) { /*取得結果的行数和*/ column = mysql_num_fields(res_ptr); row = mysql_num_rows(res_ptr); printf("查询到 %d 行 \n", row); /*输出結果的字段名*/ for (i = 0; field = mysql_fetch_field(res_ptr); i++) printf("%10s ", field->name); printf("\n"); /*按行输出結果*/ for (i = 1; i < row + 1; i++) { result_row = mysql_fetch_row(res_ptr); for (j = 0; j < column; j++) printf("%10s ", result_row[j]); printf("\n"); } } /*不要忘了关闭连接*/ mysql_close(&my_connection); } //return 0; } else { printf("数据库连接失败"); } //return 1; } //操作函数 </span><pre name="code" class="cpp">void options(){ //if (!query_sql("1")) { int choice2; //char *query; printf("欢迎登陆机票预订系统!\n"); printf("输入你的ID:"); cin >> custID; //scanf_s("%s", custID, 10); do { //printf("查询还是预订\n"); printf("1 查询 2 预订 3 退订 4 退出\n"); //scanf_s("%d", &choice1); cin >> choice1; if (choice1 == 1) { printf("1.机票查询\n"); printf("2.大巴查询\n"); printf("3.宾馆查询\n"); printf("4.查询已预订信息\n"); scanf_s("%d", &choice2); switch (choice2) { case 1:query_sql(FLIGHT); break; case 2:query_sql(BUS); break; case 3:query_sql(HOTEL); break; case 4:query_sql(RESERVATION); break; default: break; } } else if(choice1 == 4) { return; } else { reservation(custID,choice1); } } while (1); //} } //预定函数void reservation(char* custID,int choice1) {
printf("0 航班 1 大巴 2 宾馆 \n");
int choice;
cin >> choice;
//char t[256];
//scanf_s("%d", &choice);
//sprintf_s(t, 10, "%d", choice+1);
printf("输入编号:\n");
char key[20];
cin >> key;
//scanf_s("%s", key, 10);
//printf("%s\n", key);
//string s = "";
//s = "insert into reservation157 values(null,\'" + custID + "\'," + t + ",\'" + key + "\')";
//cout << s << endl;
//s.c_str() = (char*)malloc(sizeof(char) * 100);
char* ch=(char*)malloc(sizeof(char)*100) ;
if(choice1 == 2)
sprintf(ch, "insert into reservation157 values(null,'%s','%d','%s');", custID, choice + 1, key);
else if (choice1 == 3)
sprintf(ch, "delete from reservation157 where custID = '%s' and resvKey = '%s' ;", custID, key);
//strcpy_s(ch,s.size()+1, s.c_str());
//stoc(s, ch);
//printf("%s\n", ch);
//return ch;
query_sql(ch);
//cout << s << endl;
}
主要遇到的问题: 1.SQL语句为string类型 string中各部分(不同类型)的拼接
2.string类型转char*类型
3.在reservation()函数中cout正常 在main()函数中也cout正常 但不能正常预订与退订
另附一个转换函数 将int转换为string 需#include<sstream>
string numTostr(int i) {
stringstream ss;
ss << i;
return ss.str();
}
相关文章推荐
- MYSQL-----索引
- spark:scala读取mysql的4种方法
- MySQL存储过程
- MySQL基本操作
- MySQL存储引擎介绍
- mysql5.7.13安装配置及使用
- mysql数据库之索引和分析索引
- MySQL如何优化ORDER BY
- MySQl之最全且必会的sql语句
- MySQl之最全且必会的sql语句
- MYSQL Partition
- mysql 优化大致方向
- mysql 源码编绎修改 FLAGS,调试MYSQL
- MYSQL 列转行
- mysql优化之定位问题
- MySql慢查询语句检测方法
- mysql之delete删除记录后数据库大小不变
- 【DAY22】MySQL的学习笔记
- 【DAY21】JDBC 与 MySQL 的学习笔记
- 关于MySQL的各种总结