锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
2 #include <string.h>
3 #include <stdlib.h>
4 #include <stdio.h>
5
6 /*瀹氫箟浜嗕竴浜涙暟鎹簱榪炴帴闇瑕佺殑瀹?/span>*/
7 #define HOST "localhost"
8 #define USERNAME "ABitNo"
9 #define PASSWORD "ABitNo"
10 #define DATABASE "abitno"
11
12 /*榪欎釜鍑芥暟鐢ㄦ潵鎵ц浼犲叆鐨剆ql瑾炲彞*/
13 void exe_sql(char* sql) {
14
15 MYSQL my_connection; /*榪欐槸涓涓暟鎹簱榪炴帴*/
16 int res; /*鎵цsql瑾炲彞鍚庣殑榪斿洖鏍囧織*/
17
18 /*鍒濆鍖杕ysql榪炴帴my_connection*/
19 mysql_init(&my_connection);
20
21 /*榪欓噷灝辨槸鐢ㄤ簡mysql.h閲岀殑涓涓嚱鏁幫紝鐢ㄦ垜浠箣鍓嶅畾涔夌殑閭d簺瀹忓緩绔媘ysql榪炴帴錛屽茍
22 榪斿洖涓涓鹼紝榪斿洖涓嶄負絀鴻瘉鏄庤繛鎺ユ槸鎴愬姛鐨?/span>*/
23 if (mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD, DATABASE,
24 0, NULL, CLIENT_FOUND_ROWS)) {/*榪炴帴鎴愬姛*/
25
26 printf("鏁版嵁搴撴墽琛宔xe_sql榪炴帴鎴愬姛錛乗n");
27
28 /*榪欏彞璇濇槸璁劇疆鏌ヨ緙栫爜涓簎tf8錛岃繖鏍鋒敮鎸佷腑鏂?/span>*/
29 mysql_query(&my_connection, "set names utf8");
30
31 /*涓嬮潰榪欏彞璇濆氨鏄敤mysql_query鍑芥暟鏉ユ墽琛屾垜浠垰鍒氫紶鍏ョ殑sql瑾炲彞錛?br> 32 榪欎細榪斿洖涓涓猧nt鍊鹼紝濡傛灉涓?錛岃瘉鏄庤獮鍙ユ墽琛屾垚鍔?/span>*/
33 res = mysql_query(&my_connection, sql);
34
35 if (res) {/*鐜板湪灝變唬琛ㄦ墽琛屽け璐ヤ簡*/
36 printf("Error錛?nbsp;mysql_query !\n");
37 /*涓嶈蹇樹簡鍏抽棴榪炴帴*/
38 mysql_close(&my_connection);
39 } else {/*鐜板湪灝變唬琛ㄦ墽琛屾垚鍔熶簡*/
40 /*mysql_affected_rows浼氳繑鍥炴墽琛宻ql鍚庡獎鍝嶇殑琛屾暟*/
41 printf("%d 琛屽彈鍒板獎鍝嶏紒\n\n", mysql_affected_rows(&my_connection));
42 /*涓嶈蹇樹簡鍏抽棴榪炴帴*/
43 mysql_close(&my_connection);
44 }
45
46 } else {
47 /*鏁版嵁搴撹繛鎺ュけ璐?/span>*/
48 printf("鏁版嵁搴撴墽琛宔xe_sql榪炴帴澶辮觸錛乗n");
49 }
50 }
51
52 /*榪欎釜鍑芥暟鐢ㄦ潵鎵ц浼犲叆鐨剆ql瑾炲彞錛屽茍鎵撳嵃鍑烘煡璇㈢祼鏋?/span>*/
53 void query_sql(char* sql) {
54 MYSQL my_connection; /*榪欐槸涓涓暟鎹簱榪炴帴*/
55 int res; /*鎵цsql瑾炲彞鍚庣殑榪斿洖鏍囧織*/
56 MYSQL_RES *res_ptr; /*鎸囧悜鏌ヨ緇撴灉鐨勬寚閽?/span>*/
57 MYSQL_FIELD *field; /*瀛楁緇撴瀯鎸囬拡*/
58 MYSQL_ROW result_row; /*鎸夎榪斿洖鐨勬煡璇俊鎭?/span>*/
59
60 int row, column; /*鏌ヨ榪斿洖鐨勮鏁板拰鍒楁暟*/
61 int i, j; /*鍙槸鎺у埗寰幆鐨勪袱涓彉閲?/span>*/
62
63 /*鍒濆鍖杕ysql榪炴帴my_connection*/
64 mysql_init(&my_connection);
65
66 /*榪欓噷灝辨槸鐢ㄤ簡mysql.h閲岀殑涓涓嚱鏁幫紝鐢ㄦ垜浠箣鍓嶅畾涔夌殑閭d簺瀹忓緩绔媘ysql榪炴帴錛屽茍
67 榪斿洖涓涓鹼紝榪斿洖涓嶄負絀鴻瘉鏄庤繛鎺ユ槸鎴愬姛鐨?/span>*/
68 if (mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD, DATABASE,
69 0, NULL, CLIENT_FOUND_ROWS)) {/*Connection success*/
70
71 printf("鏁版嵁搴撴煡璇uery_sql榪炴帴鎴愬姛錛乗n");
72
73 /*榪欏彞璇濇槸璁劇疆鏌ヨ緙栫爜涓簎tf8錛岃繖鏍鋒敮鎸佷腑鏂?/span>*/
74 mysql_query(&my_connection, "set names utf8");
75
76 /*涓嬮潰榪欏彞璇濆氨鏄敤mysql_query鍑芥暟鏉ユ墽琛屾垜浠垰鍒氫紶鍏ョ殑sql瑾炲彞錛?br> 77 榪欎細榪斿洖涓涓猧nt鍊鹼紝濡傛灉涓?錛岃瘉鏄庤獮鍙ユ墽琛屾垚鍔?/span>*/
78 res = mysql_query(&my_connection, sql);
79
80 if (res) { /*鐜板湪灝變唬琛ㄦ墽琛屽け璐ヤ簡*/
81 printf("Error錛?nbsp;mysql_query !\n");
82 /*涓嶈蹇樹簡鍏抽棴榪炴帴*/
83 mysql_close(&my_connection);
84 } else { /*鐜板湪灝變唬琛ㄦ墽琛屾垚鍔熶簡*/
85 /*灝嗘煡璇㈢殑緄愭灉緇檙es_ptr*/
86 res_ptr = mysql_store_result(&my_connection);
87
88 /*濡傛灉緇撴灉涓嶄負絀猴紝灝辨妸緇撴灉print*/
89 if (res_ptr) {
90 /*鍙栧緱緄愭灉鐨勮鏁板拰*/
91 column = mysql_num_fields(res_ptr);
92 row = mysql_num_rows(res_ptr) + 1;
93 printf("鏌ヨ鍒?nbsp;%lu 琛?nbsp;\n", row);
94
95 /*杈撳嚭緄愭灉鐨勫瓧孌靛悕*/
96 for (i = 0; field = mysql_fetch_field(res_ptr); i++)
97 printf("%s\t", field->name);
98 printf("\n");
99
100 /*鎸夎杈撳嚭緄愭灉*/
101 for (i = 1; i < row; i++) {
102 result_row = mysql_fetch_row(res_ptr);
103 for (j = 0; j < column; j++)
104 printf("%s\t", result_row[j]);
105 printf("\n");
106 }
107
108 }
109
110 /*涓嶈蹇樹簡鍏抽棴榪炴帴*/
111 mysql_close(&my_connection);
112 }
113 }
114 }
115
116 int main(int argc, char *argv[]) {
117 /*嫻嬭瘯涓嬪悜閲岄潰鎻掑叆鏁版嵁*/
118 char *exe = "insert into abitno values('ABitNo','http://ABitNo.LinPie.com');";
119 exe_sql(exe);
120
121 /*嫻嬭瘯涓嬫煡璇?/span>*/
122 char *query = "select * from abitno;";
123 query_sql(query);
124
125 return 0;
126 }
杞澆鑷細
http://abitno.linpie.com/linux-c-connect-mysql.html
]]>
]]>
**/
姣忎竴涓爣鍑嗗鍣紝渚嬪鍚戦噺錛岄兘瀹氫箟浜嗕袱縐嶇浉鍏崇殑榪唬鍣ㄧ被鍨嬶細
container-type::const_iterator
container-type::iterator
榪欓噷container-type鏄濡倂ector<Student_info>榪欐牱鐨勫鍣ㄧ被鍨嬨?br>濡傛灉鎴戜滑鎯崇敤涓涓凱浠h搗鏉ヤ慨鏀瑰瓨鍌ㄥ湪瀹瑰櫒涓殑鍊鹼紝灝變嬌鐢╥terator綾誨瀷錛涘鏋滄垜浠粎浠呴渶瑕佽鎿嶄綔錛岄偅涔堝氨浣跨敤const_iterator綾誨瀷銆?br>
for(vector<Student_info>::size_type i = 0; i != students.end(); ++i)
cout << students[i].name << endl;
//榪唬鍣?/span>
for(vector<Student_info>::const_iterator iter = students.begin(); iter != students.end(); ++iter){
cout << (*iter).name << endl;
//鎴栬?nbsp;cout << iter->name << endl;
}
vector<Student_info> extract_fails(vector<Student_info>& students)
{
vector<Student_info> fail;
vector<Student_info>::iterator iter = students.begin();
while(iter != students.end()){
if(fgrade(*iter)){
fail.push_back(*iter);
iter = students.erase(iter);
}
else
++iter;
}
return fail;
}
]]>
**/
double median(vector<double> vec) //涓嶆敼鍙樺悜閲忔湰韜?/span>
{
typedef vector<double>::size_type vec_sz;
vec_sz size = vec.size();
if(size == 0)
throw domain_error("median of an empty vector");
sort(vec.begin(), vec.end());
vec_sz mid = size/2;
return size % 2 == 0 ? (vec[mid]+vec[mid-1]) / 2 : vec[mid];
}
//鏍規嵁鏈熶腑錛屾湡鏈冭瘯鎴愮嘩鍜屼繚瀛樺搴綔涓氱殑鍚戦噺鏉ヨ綆楀鐢熺殑鎬繪垚緇?br>//鐪熶釜鍑芥暟涓嶇敤澶嶅埗瀹冪殑鍙傛暟錛屽洜涓簃edian宸茬粡涓烘垜浠畬鎴愪簡榪欎釜宸ヤ綔
double grade(double midterm, double final, const vector<double>& hw)
{
if(hw.size() == 0)
throw domain_error("student has done no homework");
return grade(midterm, final, median(hw));
}
//鍑芥暟閲嶈澆
double grade(double midterm, double final, double homework)
{
return 0.2 * midterm +銆0.4 * final + 0.4 * homework;
}
/**
const vector<double>&榪欑綾誨瀷琚垚涓?瀵瑰弬鏁扮被鍨嬩負double鐨勫悜閲忓父閲忕殑寮曠敤"
vector<double> homework;
vector<double>& hw = homework; //hw鏄痟omework鐨勪竴涓浛浠e悕,
//瀵筯w鐨勪換浣曟搷浣滈兘絳変環浜庡homework鐨勬搷浣?br>
const vector<double>& chw = homework; //chw鏄痟omework鐨勪竴涓浛浠e悕錛?br> //const紜繚浜嗘垜浠皢涓嶄細瀵筩hw鐨勪換浣曞彲鑳芥敼鍙樺畠鐨勫肩殑鎿嶄綔
vector<double>& hw1 = hw; //鍚宧w絳変環錛屾槸homework鐨勪竴涓浛浠e悕
const vector<double>& chw1 = chw; //鍚宑hw絳変環錛屼笉鍏佽鍐欒闂甴omework鐨勪竴涓浛浠e悕
**/
//浠庤緭鍏ユ祦涓皢瀹跺涵浣滀笟鐨勬垚緇╄鍏ュ埌涓涓獀ector<double>涓?/span>
istream read_hw(istream& in, vector<double>& hw)
{
if(in){
hw.clear(); //娓呴櫎鍘熷厛鍐呭
double x;
while(in >> x)
hw.push_back(x);
//娓呴櫎嫻佷互浣胯緭鍏ュ姩浣滃浜庝笅涓涓鐢熸湁鏁?/span>
in.clear();
锝?br> return in;
}
]]>
**/
list瀹瑰櫒鐩稿綋浜庢暟鎹粨鏋勪腑鐨勯摼琛紝vector瀹瑰櫒鐩稿綋浜庨『搴忚〃銆?br>vector鏄負蹇熼殢鏈鴻闂岃浼樺寲鐨勶紝鍚屾牱鍦幫紝浼樺寲浜嗙殑list綾誨瀷錛屽彲浠ヨ鎴戜滑鍦ㄥ鍣ㄧ殑浠諱綍浣嶇疆蹇熺殑鎻掑叆鍜屽垹闄ゅ厓绱犮?br>鍦╲ector鍐呴儴鎻掑叆鎴栧垹闄ゅ厓绱狅紝涓轟簡淇濇寔蹇熼殢鏈哄瓨鍙栫殑鐗規э紝蹇呴』縐誨姩浣嶄簬琚彃鍏ユ垨鍒犻櫎鐨勫厓绱犲悗闈㈢殑鎵鏈?br>鍏冪礌銆傜Щ鍔ㄥ厓绱犳剰鍛崇潃錛屾椂闂村鏉傚害涓哄悜閲忓厓绱犱釜鏁扮殑浜屾鏂廣?br>
list<Student_info> extract_fails(list<Student_info>& students)
{
list<Student_info> fail;
list<Student_info>::iterator iter = students.begin();
while(iter != students.end()){
if(fgrade(*iter)){
fail.push_back(*iter);
iter = students.erase(iter);
}
else
++iter;
}
return fail;
}
students.sort(compare);//compare鍑芥暟鍙互鑷繁瀹氫箟
]]>
**/
sort()鍑芥暟瀹氫箟鍦ㄥご鏂囦歡<algorithm>涓紝瀹冩妸瀹瑰櫒涓殑鏁版嵁閲嶆柊鎺掑簭鎴愰潪閫掑噺搴忓垪銆傛垜浠箣鎵浠ョ敤闈為掑噺鑰屼笉鐢ㄩ掑鏄洜涓猴紝瀹瑰櫒涓殑鏌愪簺鏁版嵁鍏冪礌鍙兘浼氫笌鍏朵粬鍏冪礌鐩哥瓑銆?br>
vector<double> numbers;
typedef vector<double>::size_type vec_size;
vec_sz size = numbers.size();
while(cin >> x)
numbers.push_back(x);
sort(numbers.begin(), numbers.end());
//sort鍑芥暟宸у鍦板畬鎴愪簡浠誨姟錛屽畠浠呬粎璋冩崲浜嗗師瀹瑰櫒涓厓绱犲肩殑鐩稿欏哄簭錛岃屼笉鏄垱寤轟竴涓柊鐨勫鍣ㄦ潵瀛樺偍鎺掑簭鍚庣殑緇撴灉銆?br>
//鎺掑簭鍚庢眰涓暟
vec_sz mid = size/2;
double median;
median = size % 2 == 0 ? (numbers[mid] + numbers[mid-1])/2 : numbers[mid];
//濡傛灉涓嶅笇鏈涙敼鍙樺悜閲忔湰韜紝灝卞彲浠ラ氳繃鍑芥暟鍙傛暟鐨勬柟寮忚皟鐢ㄥ畠
//璋冪敤鍑芥暟鏃舵暣涓獀ector鍙傛暟閮戒細琚鍒?/span>
double median(vector<double> vec)
{
sort(vec.begin(), vec.end());
return
}
]]>