資源簡(jiǎn)介
C語言連接數(shù)據(jù)庫,并對(duì)MySQL數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行增刪改查
代碼簡(jiǎn)潔,其中的display函數(shù)只是為了測(cè)試方便,可以刪除
代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#include?
using?namespace?std;
MYSQL?mysql?*sock;???//聲明MySQL的句柄?
/*
目前該程序只能連接指定的數(shù)據(jù)庫,
無法像MySQL自帶客戶端那樣通過輸入數(shù)據(jù)庫名字進(jìn)行連接
*/
//顯示當(dāng)前連接的數(shù)據(jù)庫中的所有table
void?display()
{
MYSQL_RES?*?result;?
MYSQL_ROW?row;
char?*query1=“SELECT?TABLE_NAME?FROM?INFORMATION_SCHEMA.TABLES?WHERE?TABLE_SCHEMA?=?‘wlqing‘“;
//查詢所有的表名??同時(shí)所有的表名已經(jīng)在控制臺(tái)上顯示
if?(?mysql_query(&mysql?query1)?!=?0?)???????
{?
printf(“查詢失敗,原因是:?\n“);?
fprintf(stderr?“?%s\n“?mysql_error(&mysql));??
}?
else?
{?
if?(?(result?=?mysql_store_result(&mysql))?==?NULL?)?//保存查詢的結(jié)果?
{?
printf(“保存結(jié)果集失敗,原因是:?\n“);?
fprintf(stderr?“?%s\n“?mysql_error(&mysql));??
}?
else?
{?
while?(?(row?=?mysql_fetch_row(result))?!=?NULL?)?//讀取結(jié)果集中的數(shù)據(jù)?
{?
printf(“tableName?is?%s?\n“?row[0]);???????//打印當(dāng)前表的名字?
}?
}?
}
}
void?select()
{
display();//查詢所有的表名??同時(shí)所有的表名已經(jīng)在控制臺(tái)上顯示
MYSQL_RES?*?result;?
MYSQL_ROW?row;
char?column[100][100];
MYSQL_FIELD?*fd;
char?sql;
printf(“根據(jù)上面的表格列表進(jìn)行數(shù)據(jù)查詢,提示:select?*?from?‘表名‘:\n?“);
getchar();
gets(&sql);
//scanf(“%[^;]“&sql);
//printf(“%s?\n“&sql);
if?(mysql_query(&mysql?&sql)?!=?0?)
{
printf(“查詢失敗,原因是:?\n“);?
fprintf(stderr?“?%s\n“?mysql_error(&mysql));?
}
else
{
if?(?(result?=?mysql_store_result(&mysql))?==?NULL?)?//保存查詢的結(jié)果?
{?
printf(“保存結(jié)果集失敗,原因是:?\n“);?
fprintf(stderr?“?%s\n“?mysql_error(&mysql));??
}?
else?
{?
int?i??j?;
//printf(“結(jié)果集的數(shù)目:%s?\n“(unsigned?long)?mysql_num_rows(?result?));
for?(?i?=?0;?fd?=?mysql_fetch_field(?result?);?i++?)????//?獲取列名?
{
strcpy(?column[i]?fd->name?);
}
j?=?mysql_num_fields(?result?);//得到列的個(gè)數(shù)
for?(?i?=?0;?i? {
printf(?“%s??“?column[i]);
}
printf(?“\n“?);
while?(?(row?=?mysql_fetch_row(result))?!=?NULL?)?//讀取結(jié)果集中的數(shù)據(jù)?
{?
for?(?i?=?0;?i? {
printf(?“%s?????“?row[i]?);//打印各個(gè)列對(duì)應(yīng)的具體數(shù)據(jù),存在的問題是無法像MySQL客戶端那樣對(duì)齊
}
printf(?“\n“?);
}?
mysql_free_result(?result?);//此時(shí)查詢完成,釋放結(jié)果集
}?
}
}?
//通過輸入的內(nèi)容在表中插入記錄
void?insert()
{
display();
char?sql;
printf(“請(qǐng)輸入插入操作的sql語句:\n“);
getchar();
gets(&sql);
if?(mysql_query(&mysql?&sql)?!=?0)
{
printf(“插入失敗,原因是:?\n“);?
fprintf(stderr?“?%s\n“?mysql_error(&mysql));
}
else
{
printf(“插入成功“);
}
}
//通過輸入的內(nèi)容對(duì)相應(yīng)的記錄進(jìn)行修改更新
void?update()
{
display();
char?sql;
printf(“請(qǐng)輸入更新操作的sql語句:\n“);
getchar();
gets(&sql);
if?(mysql_query(&mysql?&sql)?!=?0)
{
printf(“修改失敗,原因是:?\n“);?
fprintf(stderr?“?%s\n“?mysql_error(&mysql));
}
else
{
printf(“修改成功“);
}
}
//刪除表中某條記錄,或刪除所有的記錄
void?Delete()
{
display();
char?sql;
printf(“請(qǐng)輸入刪除操作的sql語句:\n“);
getchar();
gets(&sql);
if?(mysql_query(&mysql?&sql)?!=?0)
{
pr
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????5348??2016-12-21?11:28??TestMySQL\connectMysql.cpp
?????文件????????610??2016-12-19?17:58??TestMySQL\Debug\cl.command.1.tlog
?????文件??????16190??2016-12-19?17:58??TestMySQL\Debug\CL.read.1.tlog
?????文件????????268??2016-12-19?17:58??TestMySQL\Debug\CL.write.1.tlog
?????文件??????24738??2016-12-19?17:58??TestMySQL\Debug\connectMysql.obj
?????文件??????????2??2016-12-19?17:58??TestMySQL\Debug\li
?????文件??????????2??2016-12-19?17:58??TestMySQL\Debug\li
?????文件??????????2??2016-12-19?17:58??TestMySQL\Debug\li
?????文件????????624??2016-12-19?15:15??TestMySQL\Debug\TestMySQL.Build.CppClean.log
?????文件?????????66??2016-12-19?17:58??TestMySQL\Debug\TestMySQL.lastbuildstate
?????文件???????2548??2016-12-19?17:58??TestMySQL\Debug\TestMySQL.log
?????文件??????19456??2016-12-19?17:58??TestMySQL\Debug\TestMySQL.pdb
?????文件??????????0??2016-12-19?17:58??TestMySQL\Debug\TestMySQL.unsuccessfulbuild
?????文件????????713??2016-12-19?17:58??TestMySQL\Debug\TestMySQL.vcxprojResolveAssemblyReference.cache
?????文件??????????0??2016-12-19?17:58??TestMySQL\Debug\TestMySQL.write.1.tlog
?????文件?????175104??2016-12-19?17:58??TestMySQL\Debug\vc100.idb
?????文件??????77824??2016-12-19?17:58??TestMySQL\Debug\vc100.pdb
?????文件???46530560??2016-12-21?13:27??TestMySQL\ipch\testmysql-e15f9ed8\testmysql-971c9480.ipch
?????文件????5296128??2016-07-12?14:41??TestMySQL\libmysql.dll
?????文件??????26956??2016-07-12?14:41??TestMySQL\libmysql.lib
?????文件???31543296??2016-12-21?13:32??TestMySQL\TestMySQL.sdf
?????文件???????1238??2016-12-19?15:15??TestMySQL\TestMySQL.sln
????..A..H.?????31744??2016-12-21?13:32??TestMySQL\TestMySQL.suo
?????文件???????7741??2016-12-20?15:35??TestMySQL\TestMySQL.vcxproj
?????文件????????950??2016-12-20?10:24??TestMySQL\TestMySQL.vcxproj.filters
?????文件????????143??2016-12-19?14:59??TestMySQL\TestMySQL.vcxproj.user
?????文件???????6566??2016-12-21?11:26??TestMySQL\x64\Debug\cl.command.1.tlog
?????文件?????135304??2016-12-21?11:26??TestMySQL\x64\Debug\CL.read.1.tlog
?????文件???????2668??2016-12-21?11:26??TestMySQL\x64\Debug\CL.write.1.tlog
?????文件??????75520??2016-12-21?11:26??TestMySQL\x64\Debug\connectMysql.obj
............此處省略49個(gè)文件信息
評(píng)論
共有 條評(píng)論