作者 主題: 關於c++連接mysql的insert into 輸出變數??  (閱讀 2614 次)

0 會員 與 1 訪客 正在閱讀本文。

kaisite2004

  • 可愛的小學生
  • *
  • 文章數: 2
    • 檢視個人資料
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <winsock2.h>
#include <mysql.h>/*注意要包含???文件*/
#include <stdio.h>
#include <time.h>
#include<iostream>
using namespace std;
#include<windows.h>

#pragma comment(lib,"libmysql")
/*定?了一些?据??接需要的宏*/
#define HOST "localhost"
#define USERNAME "root"
#define PASSWORD "123456"
#define DATABASE "test"
/*??函?用??行?入的sql語句*/
void exe_sql(char* sql) {
MYSQL my_connection; /*?是一??据??接*/
int res; /*?行sql語句后的返回?志*/
/*初始化mysql?接my_connection*/
mysql_init(&my_connection);
/*?里就是用了mysql.h里的一?函?,用我?之前定?的那些宏建立mysql?接,并
返回一?值,返回不?空?明?接是成功的*/
if (mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD,
DATABASE, 0, NULL, CLIENT_FOUND_ROWS)) {/*?接成功*/
printf("?据??行exe_sql?接成功!n");
/*?句?是?置查????utf8,??支持中文*/
mysql_query(&my_connection, "set names utf8");
/*下面?句?就是用mysql_query函???行我????入的sql語句,
??返回一?int值,如果?0,?明語句?行成功*/
res = mysql_query(&my_connection, sql);
if (res) {/*?在就代表?行失?了*/
printf("Error: mysql_query !\n");
/*不要忘了???接*/
mysql_close(&my_connection);
} else {/*?在就代表?行成功了*/
/*mysql_affected_rows?返回?行sql后影?的行?*/
printf("%d 行受到影?!\n",
mysql_affected_rows(&my_connection));
/*不要忘了???接*/
mysql_close(&my_connection);
}
} else {
/*?据??接失?*/
printf("?据??行exe_sql?接失?!\n");
}
}
/*??函?用??行?入的sql語句,并打印出查?結果*/
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.h里的一?函?,用我?之前定?的那些宏建立mysql?接,并
返回一?值,返回不?空?明?接是成功的*/
if (mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD,
DATABASE, 0, NULL, CLIENT_FOUND_ROWS)) {/*?接成功*/
printf("?据?查?query_sql?接成功!\n");
/*?句?是?置查????utf8,??支持中文*/
mysql_query(&my_connection, "set names utf8");
/*下面?句?就是用mysql_query函???行我????入的sql語句,
??返回一?int值,如果?0,?明語句?行成功*/
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) + 1;
printf("查?到 %lu 行 \n", row);
/*?出結果的字段名*/
for (i = 0; field = mysql_fetch_field(res_ptr); i++)
printf("%st", field->name);
printf("\n");
/*按行?出結果*/
for (i = 1; i < row; i++) {
result_row = mysql_fetch_row(res_ptr);
for (j = 0; j < column; j++)
printf("%st", result_row[j]);
printf("\n");
}
}
/*不要忘了???接*/
mysql_close(&my_connection);
}
}
}
int main(int argc, char *argv[]) {
/*??下向里面插入?据*/

       
 int i=1;
 for(int j=0;j<100;j++)

 {
  cout<<i<<endl;
  i++;
  Sleep(2000);
 
char *query;
char *exe = "insert into location (lat, lng) values(j,121)";
exe_sql(exe);
query="select * from location;";
query_sql(query);

  } 



/*??下查?*/

system("pause");

return 0;
}

我是要做出每格2秒會加1的輸出(輸出到mysql資料庫)-像是經緯度的樣子(0,121),(1,121),(2,121)
請問要如何改才可以正確顯示啊?

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5384
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
Re: 關於c++連接mysql的insert into 輸出變數??
« 回覆 #1 於: 2013-08-13 09:46 »
要帶變數在 SQL 裡頭, 請用 bind parameter 的方式.
不知道怎麼用 (Google 找一下吧, 原則上 mysql 的官方文件都有可以用的範例), 就自己都弄成 "字串" (就是真的要執行的 SQL 指令) 再丟給 Server.

elleryq

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 908
  • 性別: 男
    • 檢視個人資料
    • Thinking more...
Re: 關於c++連接mysql的insert into 輸出變數??
« 回覆 #2 於: 2013-08-14 13:40 »
Plan your work, then work your plan.
我的首頁:http://blog.elleryq.idv.tw
351899by http://counter.li.org