C语言写CGI

// C语言开发网站1.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdlib.h>
#include <windows.h>

//需要引入要用到的头文件
#include <sql.h>
#include <sqlext.h>
#include <sqltypes.h>
//最大缓冲区长度
#define MAXBUFFLEN 255
//登录超时
#define LOGIN_TIMEOUT 30
//检查数据库连接错误
#define CHECKDBSTMTERROR(result,hstmt) if(SQL_ERROR==result){ShowDBStmtError(hstmt);return;}
//数据库连接字符串
SQLCHAR ConnStrIn[MAXBUFFLEN]="DRIVER={MySQL ODBC 5.2w Driver};SERVER=172.16.78.220;UID=root;PWD=root;DATABASE=db1;charset=gbk";
SQLCHAR ConnStrOut[MAXBUFFLEN];//暂且不知道


//操作数据库所要用到的类型
SQLHENV henv=NULL;//环境句柄
SQLHDBC hdbc=NULL;//数据库连接句柄
SQLHSTMT stmt=NULL;//SQL语句
SQLRETURN result=NULL;//执行结果

bool Create_connection();




int main(int argc, char* argv[])
{
			printf("Contenttype:text/html\n\n");
			printf("<html>\n");
			printf("<body>\n");
			printf("<a href='http://www.baidu.com'>超链接</a>\n");
			printf("<h1>H1标签</h1>\n");
			printf("%s",getenv("SERVER_SOFTWARE"));
			printf("<div style='width:100px;height:100px;background-color:red;'>这是一个div</div>\n");
			printf("<form method='get' action='http://127.0.0.1/cgi-bin/mycgi.exe'>");

			printf("<input type='text' name='txt_name'/>");
			printf("<input type='submit' value='提交到服务器' />");
			printf("</form>");
			bool res=Create_connection();
			if(res==false)
			{
				printf("数据库连接失败");
				return 0;
			}
			
			SQLRETURN ress=NULL;
			//初始化语句句柄
			result = SQLAllocHandle(SQL_HANDLE_STMT,hdbc, &stmt);
			result = SQLPrepare(stmt,(SQLCHAR*)"select CH from t_test",SQL_NTS);
			result =SQLExecute(stmt);
			SQLINTEGER cbsatid=SQL_NTS;
			while (SQLFetch(stmt)!=SQL_NO_DATA_FOUND)
			{
				TCHAR name[30];
				//ZeroMemory(name,sizeof(name));
				SQLGetData(stmt,1,SQL_C_CHAR,name,20,&cbsatid);
				printf("读取MYSQL值为:%s\n",name);
			}



			//释放语句
			SQLFreeStmt(stmt,SQL_CLOSE);
			//关闭连接
			SQLDisconnect(hdbc);
			//释放连接句柄
			SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
			SQLFreeHandle(SQL_HANDLE_ENV,henv);

			char *str=getenv("QUERY_STRING");
			printf("\nURL参数:%s",str);

			printf("</body>\n");
			printf("</html>\n");

	return 0;
}



//创建数据库连接
bool Create_connection()
{
	//分配环境句柄
	result= SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv);
	//设置环境管理属性
	result=SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(void *)SQL_OV_ODBC3,0);
	//分配连接句柄
	result=SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);
	//设置连接属性
	result=SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result=SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFFLEN,(SQLSMALLINT *)0,SQL_DRIVER_NOPROMPT);
	return true;
}


将生成的exe程序放入apache的cgi-bin目录下,输入http://localhost/cgi-bin/cgi.exe

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值