#include<mysql/mysql.h>
#include<stdio.h>
intmain()
{
MYSQL*conn
MYSQL_RES*res
MYSQL_ROWrow
char*server="localhost"//本地连接
char*user="root"//
char*password="525215980"//mysql密码
char*database="student"//数据库名
char*query="select*fromclass"//需要查询的语句
intt,r
conn=mysql_init(NULL)
if(!mysql_real_connect(conn,server,user,password,database,0,NULL,0))
{
printf("Errorconnectingtodatabase:%s\n",mysql_error(conn))
}else{
printf("Connected...\n")
}
t=mysql_query(conn,query)
if(t)
{
printf("Errormakingquery:%s\n",mysql_error(conn))
}else{
printf("Querymade...\n")
res=mysql_use_result(conn)
if(res)
{
while((row=mysql_fetch_row(res))!=NULL)
{
//printf("num=%d\n",mysql_num_fields(res))//列数
for(t=0t<mysql_num_fields(res)t++)
printf("%8s",row[t])
printf("\n")
}
}
mysql_free_result(res)
}
mysql_close(conn)
return0
}
扩展资料
C语言使用注意事项:
1、指针是c语言的灵魂,一定要灵活的使用它:
(1)、指针的声明,创建,赋值,销毁等
(2)、指针的类型转换,传参,回调等
2、递归调用也会经常用到:
(1)、递归遍历树结构
(2)、递归搜索
//vc工具中添加E:\WAMP\BIN\MYSQL\MYSQL5.5.8\LIB 路径//在工程设置-》链接》库模块中添加 libmysql.lib
#include <stdio.h>
#include <time.h>
#include <string.h>
#include <winsock.h>
#include "E:\wamp\bin\mysql\mysql5.5.8\include\mysql.h"
void main(){
MYSQL *conn
MYSQL_RES *res
MYSQL_ROW row
char *server ="localhost"
char *user ="root"
char *password=""
char *database="test"
char sql[1024]="select * from chinaren"
conn=mysql_init(NULL)
if(!mysql_real_connect(conn,server,user,password,database,0,NULL,0)){
fprintf(stderr,"%s\n",mysql_error(conn))
exit(1)
}
if(mysql_query(conn,sql)){
fprintf(stderr,"%s\n",mysql_error(conn))
exit(1)
}
res=mysql_use_result(conn)
while((row = mysql_fetch_row(res))!=NULL){
printf("%s\n",row[2])
}
mysql_free_result(res)
mysql_close(conn)
}
===============================
#if defined(_WIN32) || defined(_WIN64) //为了支持windows平台上的编译
#include <windows.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include "mysql.h"
//定义数据库操作的宏,也可以不定义留着后面直接写进代码
#define SELECT_QUERY "show tables"
int main(int argc, char **argv) //char **argv 相当于 char *argv[]
{
MYSQL mysql,*handle //定义数据库连接的句柄,它被用于几乎所有的MySQL函数
MYSQL_RES *result //查询结果集,结构类型
MYSQL_FIELD *field//包含字段信息的结构
MYSQL_ROW row //存放一行查询结果的字符串数组
char querysql[160] //存放查询sql语句字符串
//初始化
mysql_init(&mysql)
//连接数据库
if (!(handle = mysql_real_connect(&mysql,"localhost","user","pwd","dbname",0,NULL,0))) {
fprintf(stderr,"Couldn't connect to engine!\n%s\n\n",mysql_error(&mysql))
}
sprintf(querysql,SELECT_QUERY,atoi(argv[1]))
//查询数据库
if(mysql_query(handle,querysql)) {
fprintf(stderr,"Query failed (%s)\n",mysql_error(handle))
}
//存储结果集
if (!(result=mysql_store_result(handle))) {
fprintf(stderr,"Couldn't get result from %s\n", mysql_error(handle))
}
printf("number of fields returned: %d\n",mysql_num_fields(result))
//读取结果集的内容
while (row = mysql_fetch_row(result)) {
printf("table: %s\n",(((row[0]==NULL)&&(!strlen(row[0]))) ? "NULL" : row[0]) )
}
//释放结果集
mysql_free_result(result)
//关闭数据库连接
mysql_close(handle)
system("PAUSE")
//为了兼容大部分的编译器加入此行
return 0
}
嵌入式SQL程序的VC+SQL server 2000实现的环境配置
嵌入SQL的C应用程序具体到VC++6.0, SQL Server2000 下调试可分为五步:1、环境初始化2、预编译3、编译4、连接5、运行。下面就其中重要的的操作方法给以详细说明。
1、环境初始化
(1) SQL Server2000为其嵌入式SQL提供了一此特殊的接口;默认的安装方式没有安装这此接口;因此,需要把devtools.rar解压到SQLServer的系统日录下(即文件夹devtools中的所有文件)如果操作系统安装在C盘,则SQL Server的系统目录是C:\Program Files\Microsoft SQL Server。(或 在安装Microsoft SQL Server 2000时选择安装Development Tools,为使用嵌入式SQL语言准备必要的头文件和库文件。)
( 2)初始化Visual C++ 6.0编译器环境。在命令行方式下运行文件\Microsoft Visual Studio\VC98\Bin\vcvars32.bat。
(3)初始化SQL Server的预编译环境。在命令行方式下运行文件:\Devtools\samples\esqlc\setenv.bat。
( 4) VC++6.0环境配置。具体配置分为如下三步[:
①Tools->options->directories->Include Files:添加 C:\Program Files\Microsoft SQL Server\devtools\include。将SQL server自带的用于数据库开发的头文件包含到工程环境中。
②Tools->options->directories->Lib Files:添加C:\Program Files\Microsoft SQL Server\devtools\x861ib。将开发用到的包包含到工程中。
③project->Settings->Link->Object/Library Modules,添加库文件:SQLakw32.lib, Caw32.lib。这两个文件之间用空格分开。
2、预编译
C语言编译程序不能识别应用程序中的SQL语句,需要经过预处理程序将其转换成C语句。SQL Server的预处理程序是nsqlprep.exe。 nsqlprep.exe在SQL Server安装日录的MSSQL\Binn下。若SQL Server数据库采用的是默任安装方式,则需要把binn.rar的内容拷贝到指定目录下。
Microsoft SQL Server 2000提供的预编译程序nsqlprep.exe,用于对嵌入式SQL程序进行预编译处理,生成C语言源程序.实际上就是将嵌入式SQL程序中的嵌入式SQL语句替换为对运行时库文件Sqlakw32. dll的函数调用,接着运行时库文件调用动态连接库Ntwdblib. dll通过网络来存取Microsoft SQL Server 2000数据库服务器.
预编译程序nsqlprep的常用语法为:
nsqlprep ESQL_File /SQLACCESS /DB server_name.database_name /PASS login.password
其中ESQL_File是要预编译的嵌入式SQL程序/SQLACCESS通知nsqlprep自动地为嵌入式SQL程序中的静态SQL语句创建相应的存储过程/DB server_name.database_name指明要连接的服务器以及数据库名称/PASS login.password给出登录名及相应的口令.
下面的程序demo.sqc实现了从数据库服务器hushaobo的数据库pubs中的authors表中读取au_lname为white的人对应的 au_fname 值,并保存到变量first_name 中显示出来。(连接数据库的用户为sa,对应密码为1982)
#include<stdio.h>
void main()
{
EXEC SQL BEGIN DECLARE SECTION
char first_name[40]
char last_name[]="White"
EXEC SQL END DECLARE SECTION
EXEC SQL CONNECT TO hushaobo.pubs
USER sa.1982
EXEC SQL SELECT au_fname INTO :first_name from authors WHERE au_lname = :last_name
EXEC SQL DISCONNECT ALL
printf("first name: %s \n",first_name)
}
在命令行下运行:nsqlprep demo.sqc /SQLACCESS /DB hushaobo.pubs /PASS sa.1982
则生成demo.c,将该文件添加到VC工程中编译即可。
3、编译,连接与运行
在VC++6.0中创建一个 "WIN32 Console Application"的Proiect,然后将预编译生成的c文件加入Proiect,编译连接即可生成访问SQL Server的可执行程序。 Visual C++ 6.0进行编译连接时需要用到动态链接库SQLakw32.d11与SQLaiw32.d11尽管这两个文件已经随同binn.rar被拷贝到SQLServer安装目录的MSSQL\Binn文件夹下,但仍然需要把它们的路径加到系统路径变量中,以使得程序运行时能找到它们,具体添加方法如下:
方法1:把这两个文件拷贝到操作系统目录下的system32子目录中。
方法2:我的电脑->属性->高级->环境变量->path->编辑,在变量值中加入路径值新路径与已有路径间用;间隔。
注意调适程序时,文件名中不要包含cursor,否则可能会出错。