?? 110.cpp
字號(hào):
// 110.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "110.h"
#include "sql.h"
#include "sqlext.h"
#include "sqltypes.h"
#include "windows.h"
//#include <mysql.h>
#include <stdio.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// The one and only application object
CWinApp theApp;
using namespace std;
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
// initialize MFC and print and error on failure
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
cerr << _T("Fatal Error: MFC initialization failed") << endl;
nRetCode = 1;
}
else
{
// TODO: code your application's behavior here.
SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT hstmt1,hstmt2;
SQLRETURN retcode1,retcode2;
SQLINTEGER number[15],number0,record_number[15],record_number0,name[15],name0,\
sex[15],sex0,age[15],age0,address[128],address0,work_unit[128],work_unit0,\
register_date[16],register_date0;
char ins_sel_del;//執(zhí)行查詢,插入還是刪除
char query[512];
//select 語句的條件選項(xiàng)
char record_number1[12],name1[16],sex1[4],register_date1[32];
char number1[12],age1[6];
char address1[128],work_unit1[128];
char sign1,sign2,sign3;
int record_number2,number2,name2,age2,sex2,register_date2;
//configure handle----------------------------------------------------------
/*configure enverimental handle*/
retcode1 = SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv);
if(retcode1 == SQL_SUCCESS || retcode1 == SQL_SUCCESS_WITH_INFO)
{
/*set enverimental attribution of ODBC*/
SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0);
/*configure connection handle*/
retcode1 = SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);
if(retcode1 == SQL_SUCCESS || retcode1 == SQL_SUCCESS_WITH_INFO)
{
/*set max time of load is 5sec*/
//SQLSetConnectAttr(hdbc,(long*)SQL_ATTR_LOGIN_TIMEOUT,5,0);
/*connect to database*/
retcode1 = SQLConnect(hdbc,(SQLCHAR*)"lab_member",SQL_NTS,
(SQLCHAR*)"root",SQL_NTS,(SQLCHAR*)"bren",SQL_NTS);
if(retcode1 == SQL_SUCCESS || retcode1 == SQL_SUCCESS_WITH_INFO)
{
//configure statment
retcode1 = SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt1);
retcode2 = SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt2);
if((retcode1 == SQL_SUCCESS || retcode1 == SQL_SUCCESS_WITH_INFO)
&& (retcode2 == SQL_SUCCESS || retcode2 == SQL_SUCCESS_WITH_INFO))
{
//execute SQL--------------------------------------------------------------------------------
//create database
retcode1 = SQLExecDirect(hstmt1,(SQLCHAR*)"create database yldb",SQL_NTS);
if(retcode1 == SQL_SUCCESS || retcode1 == SQL_SUCCESS_WITH_INFO)
{
printf("建立數(shù)據(jù)庫成功!\n");
}
//use database
retcode1 = SQLExecDirect(hstmt1,(SQLCHAR*)"use yldb",SQL_NTS);
if(retcode1 == SQL_SUCCESS || retcode1 == SQL_SUCCESS_WITH_INFO)
{
printf("使用數(shù)據(jù)庫成功!\n");
}
//create table
retcode1 = SQLExecDirect(hstmt1,(SQLCHAR*)"create table ylxt(\
number VARCHAR(12),\
record_number VARCHAR(12),\
name VARCHAR(16),\
sex VARCHAR(4),\
age VARCHAR(6),\
address VARCHAR(128),\
work_unit VARCHAR(128),\
register_date DATE,\
primary key (record_number))",\
SQL_NTS);
if(retcode1 == SQL_SUCCESS || retcode1 == SQL_SUCCESS_WITH_INFO)
{
printf("建表成功!\n");
}
printf("insert values of ins_sel_del\n\
'i' for insert\n\
's' for select\n\
'd' for delete\n\
't' for select data today\n");
scanf("%s",&ins_sel_del);
//insert data 開始=============================================================
if(ins_sel_del == 'i')
{
printf("輸入想要插入的病人信息順序?yàn)椋翰∪司幪?hào),病人檔案號(hào),姓名,性別,年齡,家庭地址,工作單位,登記時(shí)間\n");
printf("登記時(shí)間格式為yyyy-mm-dd\n");
scanf("%s%s%s%s%s%s%s%s",\
number1,record_number1,name1,sex1,age1,address1,work_unit1,register_date1);
sprintf(query,"insert into ylxt values('%s','%s','%s','%s','%s','%s','%s','%s')",\
number1,record_number1,name1,sex1,age1,address1,work_unit1,register_date1);
retcode1 = SQLExecDirect(hstmt1,(SQLCHAR*)query,SQL_NTS);
}
//insert 結(jié)束=====================================================================
//select data開始==================================================================
if(ins_sel_del == 's')
{
printf("輸入查詢的約束條件!\n");
sprintf(query,"select number,record_number,name,sex,age,address,work_unit,register_date from ylxt");
//查詢條件有沒有病人檔案號(hào)
printf("有無檔案號(hào)?\n有'1' 沒有'0'\n");
scanf("%d",&record_number2);
if(record_number2)
{
printf("輸入檔案號(hào)的值.\n");
scanf("%s",record_number1);
sprintf(query,"%s where record_number='%s'",query,record_number1);
}
//查詢條件有沒有病人編號(hào)
printf("有無病人編號(hào)?\n有'1',沒有'0'\n");
scanf("%d",&number2);
if(number2 && record_number2)
{
printf("輸入病人編號(hào)!\n");
scanf("%s",number1);
sprintf(query,"%s and number",query);
printf("輸入 '=','<'或'>'\n");
scanf("%s",&sign1);
if(sign1 == '=')
{
sprintf(query,"%s=%s",query,number1);
}
if(sign1 == '<')
{
sprintf(query,"%s<%s",query,number1);
}
if(sign1 == '>')
{
sprintf(query,"%s>%s",query,number1);
}
}
else if(number2 && !record_number2)
{
printf("輸入病人編號(hào)!\n");
scanf("%s",number1);
sprintf(query,"%s where number",query);
printf("輸入 '=','<'或'>'\n");
scanf("%s",&sign1);
if(sign1 == '=')
{
sprintf(query,"%s=%s",query,number1);
}
if(sign1 == '<')
{
sprintf(query,"%s<%s",query,number1);
}
if(sign1 == '>')
{
sprintf(query,"%s>%s",query,number1);
}
}
//查詢條件有沒有姓名
printf("有無姓名?\n有'1',沒有'0'\n");
scanf("%d",&name2);
if(name2 && record_number2 || name2 && number2)
{
printf("輸入姓名!\n");
scanf("%s",name1);
sprintf(query,"%s and name='%s'",query,name1);
}
else if(name2 && !record_number2 && !number2)
{
printf("輸入姓名!\n");
scanf("%s",name1);
sprintf(query,"%s where name='%s'",query,name1);
}
//查詢條件有沒有性別
printf("有無性別?\n有'1',沒有'0'\n");
scanf("%d",&sex2);
if(sex2 && record_number2 || sex2 && number2 ||sex2 && name2)
{
printf("輸入性別!\n");
scanf("%s",sex1);
sprintf(query,"%s and sex='%s'",query,sex1);
}
else if(sex2 && !record_number2 && !number2 && !name2)
{
printf("輸入性別!\n");
scanf("%s",sex1);
sprintf(query,"%s where sex='%s'",query,sex1);
}
//查詢條件有沒有年齡
printf("有無年齡?\n有'1',沒有'0'\n");
scanf("%s",&age2);
if(age2 && record_number2 || age2 && number2 || age2 && name2 || age2 && sex2)
{
printf("輸入年齡!\n");
scanf("%s",age1);
sprintf(query,"%s and age",query);
printf("輸入 '=','<'或'>'\n");
scanf("%s",&sign2);
if(sign2 == '=')
{
sprintf(query,"%s=%s",query,age1);
}
if(sign2 == '<')
{
sprintf(query,"%s<%s",query,age1);
}
if(sign2 == '>')
{
sprintf(query,"%s>%s",query,age1);
}
}
else if(age2 && !record_number2 && !number2 && !name2 && !sex2)
{
printf("輸入年齡!\n");
scanf("%s",age1);
sprintf(query,"%s where age",query);
printf("輸入 '=','<'或'>'\n");
scanf("%s",&sign2);
if(sign2 == '=')
{
sprintf(query,"%s=%s",query,age1);
}
if(sign2 == '<')
{
sprintf(query,"%s<%s",query,age1);
}
if(sign2 == '>')
{
sprintf(query,"%s>%s",query,age1);
}
}
//查詢條件有沒有登記時(shí)間
printf("有無登記時(shí)間?\n有'1',沒有'0'\n");
scanf("%d",®ister_date2);
if(register_date2 && record_number2 || register_date2 && number2\
|| register_date2 && name2 || register_date2 && sex2\
|| register_date2 && age2)
{
printf("輸入登記時(shí)間!\n格式為yyyy-mm-dd\n");
scanf("%s",register_date1);
sprintf(query,"%s and register_date",query);
printf("輸入 '=','<'或'>'\n");
scanf("%s",&sign3);
if(sign3 == '=')
{
sprintf(query,"%s=%s",query,register_date1);
}
if(sign3 == '<')
{
sprintf(query,"%s<%s",query,register_date1);
}
if(sign3 == '>')
{
sprintf(query,"%s>%s",query,register_date1);
}
}
else if(register_date2 && !record_number2 && !number2 && !name2\
&& !sex2 && !age2)
{
printf("輸入登記時(shí)間!\n格式為yyyy-mm-dd\n");
scanf("%s",register_date1);
sprintf(query,"%s where register_date",query);
printf("輸入 '=','<'或'>'\n");
scanf("%s",&sign3);
if(sign3 == '=')
{
sprintf(query,"%s=%s",query,register_date1);
}
if(sign3 == '<')
{
sprintf(query,"%s<%s",query,register_date1);
}
if(sign3 == '>')
{
sprintf(query,"%s>%s",query,register_date1);
}
}
//執(zhí)行查詢語句
retcode2 = SQLExecDirect(hstmt2,(SQLCHAR*)query,SQL_NTS);
if(retcode2 == SQL_SUCCESS || retcode2 == SQL_SUCCESS_WITH_INFO)
{
printf("number record_number name sex age address work_unit register_date\n");
while(SQLFetch(hstmt2) == 0)
{
SQLGetData(hstmt2,1,SQL_C_CHAR,&number,15,&number0);
SQLGetData(hstmt2,2,SQL_C_CHAR,&record_number,15,&record_number0);
SQLGetData(hstmt2,3,SQL_C_CHAR,&name,15,&name0);
SQLGetData(hstmt2,4,SQL_C_CHAR,&sex,15,&sex0);
SQLGetData(hstmt2,5,SQL_C_CHAR,&age,15,&age0);
SQLGetData(hstmt2,6,SQL_C_CHAR,&address,128,&address0);
SQLGetData(hstmt2,7,SQL_C_CHAR,&work_unit,128,&work_unit0);
SQLGetData(hstmt2,8,SQL_C_CHAR,®ister_date,16,®ister_date0);
printf("%6s%10s%6s%4s%4s%30s%30s%10s\n",number,record_number,name,sex,age,address,work_unit,register_date);
memset(number,0x00,sizeof(number));
memset(record_number,0x00,sizeof(record_number));
memset(name,0x00,sizeof(name));
memset(sex,0x00,sizeof(sex));
memset(age,0x00,sizeof(age));
memset(address,0x00,sizeof(address));
memset(work_unit,0x00,sizeof(work_unit));
memset(register_date,0x00,sizeof(register_date));
}
}
}
//select data 結(jié)束===================================================
//select data 今日登記
if(ins_sel_del == 't')
{
sprintf(query,"select number,record_number,name,sex,age,address,work_unit,register_date from ylxt where register_date=CURDATE()");
retcode2 = SQLExecDirect(hstmt2,(SQLCHAR*)query,SQL_NTS);
if(retcode2 == SQL_SUCCESS || retcode2 == SQL_SUCCESS_WITH_INFO)
{
printf("number record_number name sex age address work_unit register_date\n");
while(SQLFetch(hstmt2) == 0)
{
SQLGetData(hstmt2,1,SQL_C_CHAR,&number,15,&number0);
SQLGetData(hstmt2,2,SQL_C_CHAR,&record_number,15,&record_number0);
SQLGetData(hstmt2,3,SQL_C_CHAR,&name,15,&name0);
SQLGetData(hstmt2,4,SQL_C_CHAR,&sex,15,&sex0);
SQLGetData(hstmt2,5,SQL_C_CHAR,&age,15,&age0);
SQLGetData(hstmt2,6,SQL_C_CHAR,&address,128,&address0);
SQLGetData(hstmt2,7,SQL_C_CHAR,&work_unit,128,&work_unit0);
SQLGetData(hstmt2,8,SQL_C_CHAR,®ister_date,16,®ister_date0);
printf("%6s%10s%6s%4s%4s%30s%30s%10s\n",number,record_number,name,sex,age,address,work_unit,register_date);
memset(number,0x00,sizeof(number));
memset(record_number,0x00,sizeof(record_number));
memset(name,0x00,sizeof(name));
memset(sex,0x00,sizeof(sex));
memset(age,0x00,sizeof(age));
memset(address,0x00,sizeof(address));
memset(work_unit,0x00,sizeof(work_unit));
memset(register_date,0x00,sizeof(register_date));
}
}
}
//delect data 開始==================================================
if(ins_sel_del == 'd')
{
printf("輸入想要?jiǎng)h除行的病人檔案號(hào)!\n");
scanf("%s",record_number1);
sprintf(query,"delete from ylxt where record_number='%s';",record_number1);
retcode1 = SQLExecDirect(hstmt1,(SQLCHAR*)query,SQL_NTS);
if(retcode1 == SQL_SUCCESS)
printf("刪除成功!");
}
//delect data 結(jié)束====================================================
//free handle--------------------------------------------------------------------------------
SQLFreeHandle(SQL_HANDLE_STMT,hstmt1);
SQLFreeHandle(SQL_HANDLE_STMT,hstmt2);
}
SQLDisconnect(hdbc);
}
SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
}
SQLFreeHandle(SQL_HANDLE_ENV,henv);
}
}
return nRetCode;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -