Quantcast
Channel: CodeSection,代码区,数据库(综合) - CodeSec
Viewing all articles
Browse latest Browse all 6262

数据库连接代码 数据库连接代码 数据库连接教程 数据库

$
0
0

#include "sql.h"

#include "sqltypes.h"

#include "sqlext.h"

using namespace std;

RETCODE retcode; //结果返回集

SQLHDBC hdbc; //定义连接句柄

void SQL(char* ); //执行SQL语句子程序

void print(); //打印子程序

void print2();

void print3();

void partprint(); //打印部分查询子程序

void partprint2();

void partprint3();

int main()

{

char str[200], pstr[200];

int dbchoice;

int opchoice;

SQLHANDLE henv; //定义环境句柄

unsigned char SY[] = "SQLClient_ODBC"; //数据源名称
unsigned char db2[] = "sa"; //用户名
unsigned char pass[] = "cuc411"; //密码

//连接ODBC数据源

retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);//分配ODBC环境

//if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)

retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); //设置环境属性

//if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)

retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc); //分配连接句柄

// if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)

retcode = SQLConnect(hdbc, SY, SQL_NTS, db2, SQL_NTS,pass, SQL_NTS); //连接

if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO){

while (1){

cout << "请选择JWGL中的1、课程表,2、学生表或3、成绩表(1:course, 2:student, 3:sc):" ;

cin >> dbchoice;

if (dbchoice >=4 || dbchoice <= 0)

cout << "Error:不存在该表!\n";

else{

cout << "请选择操作类型(1:查询,2:update、insert or drop):";

cin >> opchoice;

if (opchoice == 1){//若为查询操作,则区分对不同的表操作

if (dbchoice == 1)

partprint();

else if (dbchoice == 2)

partprint2();

else if (dbchoice == 3)

partprint3();

}

else if (opchoice ==2){//若为插入、修改、删除等操作,则接收命令语句并区分不同的表执行

cout << "请输入操作:" < getchar();

cin.getline(str,200);

SQL(str);

if (dbchoice == 1)

print();

else if (dbchoice == 2)

print2();

else if (dbchoice == 3)

print3();

}

else

cout << "错误操作!" < }

// SQL(str);

// print3();

}

}

else if(!(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)){

printf("数据库连接失败!");

}

SQLFreeConnect(hdbc); //释放连接句柄

SQLFreeEnv(henv); //释放ODBC环境句柄

system("pause");

return 0;

}

void SQL(char* aaa)

{

SQLHSTMT hstmt;

retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

if (retcode == SQL_SUCCESS)

retcode = SQLExecDirect(hstmt, (SQLCHAR *)aaa, SQL_NTS);

SQLFreeStmt(hstmt, SQL_DROP); //释放语句句柄

}

void print()

{

unsigned char yuju[] = "select cno,cname from course";

SQLHSTMT hstmt; //定义语句句柄

int i =1;

char L1[20], L2[20], L3[20], L4[20], L5[20];

long lenOut1, lenOut2, lenOut3, lenOut4, lenOut5;

retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

if (retcode == SQL_SUCCESS){

retcode = SQLExecDirect(hstmt, yuju, SQL_NTS);

if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO){

retcode = SQLBindCol(hstmt, 1, SQL_C_CHAR, L1, sizeof(L1), &lenOut1);

retcode = SQLBindCol(hstmt, 2, SQL_C_CHAR, L2, sizeof(L2), &lenOut2);

/*retcode = SQLBindCol(hstmt, 3, SQL_C_CHAR, L3, sizeof(L3), &lenOut3);

retcode = SQLBindCol(hstmt, 4, SQL_C_CHAR, L4, sizeof(L4), &lenOut4);

retcode = SQLBindCol(hstmt, 5, SQL_C_CHAR, L5, sizeof(L5), &lenOut5); *///把所有捆绑过的数据字段的数据拷贝到相应的缓冲区

retcode = SQLFetch(hstmt); //该函数用于将记录集的下一行变成当前行,并把所有捆绑过的数据字段的数据拷贝到相应的缓冲区

while (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO){

printf("%d\t%s\t%s\n", i, L1, L2);

retcode = SQLFetch(hstmt);

i ++;

}

}

}

SQLFreeStmt(hstmt, SQL_DROP);

}

void print2()

{

unsigned char yuju[] = "select* from student";

int i = 1;

SQLHSTMT hstmt;

char L1[50], L2[50], L3[50], L4[50], L5[20], L6[50];

long lenOut1, lenOut2, lenOut3, lenOut4, lenOut5, lenOut6;

retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

if (retcode == SQL_SUCCESS){

retcode = SQLExecDirect(hstmt, yuju, SQL_NTS);

if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO){

retcode = SQLBindCol(hstmt, 1, SQL_C_CHAR, L1, sizeof(L1), &lenOut1);

retcode = SQLBindCol(hstmt, 2, SQL_C_CHAR, L2, sizeof(L2), &lenOut2);

retcode = SQLBindCol(hstmt, 3, SQL_C_CHAR, L3, sizeof(L3), &lenOut3);

retcode = SQLBindCol(hstmt, 4, SQL_C_CHAR, L4, sizeof(L4), &lenOut4);

retcode = SQLBindCol(hstmt, 5, SQL_C_CHAR, L5, sizeof(L5), &lenOut5);

retcode = SQLBindCol(hstmt, 6, SQL_C_CHAR, L6, sizeof(L6), &lenOut6);

retcode = SQLFetch(hstmt);

while (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO){

printf("%d\t%s\t%s\t%s\t%s\t%s\t%s\t\n", i, L1, L2, L3, L4, L5, L6);

retcode = SQLFetch(hstmt);

i ++;

}

}

}

SQLFreeStmt(hstmt, SQL_DROP);

}

void print3()

{

unsigned char yuju[] = "select* from sc";

int i = 1;

SQLHSTMT hstmt;

char L1[50], L2[50], L3[50];

long lenOut1, lenOut2, lenOut3;

retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

if (retcode == SQL_SUCCESS){

retcode = SQLExecDirect(hstmt, yuju, SQL_NTS);

if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO){

retcode = SQLBindCol(hstmt, 1, SQL_C_CHAR, L1, sizeof(L1), &lenOut1);

retcode = SQLBindCol(hstmt, 2, SQL_C_CHAR, L2, sizeof(L2), &lenOut2);

retcode = SQLBindCol(hstmt, 3, SQL_C_CHAR, L3, sizeof(L3), &lenOut3);

retcode = SQLFetch(hstmt);

while (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO){

printf("%d\t%s\t%s\t%s\n", i, L1, L2, L3);

retcode = SQLFetch(hstmt);

i ++;

}

}

}

SQLFreeStmt(hstmt, SQL_DROP);

}

void partprint()

{

unsigned char yuju[] = "select* from course";

SQLHSTMT hstmt; //定义语句句柄

int i = 1;

char L1[50], L2[50], L3[50], L4[50], L5[50];

long lenOut1, lenOut2, lenOut3, lenOut4, lenOut5;

cout << "Information of Course" << endl;

retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

if (retcode == SQL_SUCCESS){

retcode = SQLExecDirect(hstmt, yuju, SQL_NTS);

retcode = SQLFetch(hstmt);

while (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO){

// retcode = SQLFetch(hstmt);

retcode = SQLGetData(hstmt, 1, SQL_C_CHAR, L1, sizeof(L1), &lenOut1);

retcode = SQLGetData(hstmt, 2, SQL_C_CHAR, L2, sizeof(L2), &lenOut2);

retcode = SQLGetData(hstmt, 3, SQL_C_CHAR, L3, sizeof(L3), &lenOut3);

retcode = SQLGetData(hstmt, 4, SQL_C_CHAR, L4, sizeof(L4), &lenOut4);

// retcode = SQLBindCol(hstmt, 5, SQL_C_CHAR, L5, sizeof(L5), &lenOut5); //把所有捆绑过的数据字段的数据拷贝到相应的缓冲区

retcode = SQLFetch(hstmt);

printf("%i\t%s\t%s\t%s\t%s\n", i, L1, L2, L3, L4);

i++;

}

}

SQLFreeStmt(hstmt, SQL_DROP);

}

void partprint2()

{

unsigned char yuju[] = "select* from student";

int i = 1;

SQLHSTMT hstmt;

char L1[50], L2[50], L3[50], L4[50], L5[20], L6[50];

long lenOut1, lenOut2, lenOut3, lenOut4, lenOut5, lenOut6;

cout << "Information of students:" << endl;

retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

if (retcode == SQL_SUCCESS){

retcode = SQLExecDirect(hstmt, yuju, SQL_NTS);

retcode = SQLFetch(hstmt);

while(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO){

// retcode = SQLFetch(hstmt);

retcode = SQLGetData(hstmt, 1, SQL_C_CHAR, L1, sizeof(L1), &lenOut1);

retcode = SQLGetData(hstmt, 2, SQL_C_CHAR, L2, sizeof(L2), &lenOut2);

retcode = SQLGetData(hstmt, 3, SQL_C_CHAR, L3, sizeof(L3), &lenOut3);

retcode = SQLGetData(hstmt, 4, SQL_C_CHAR, L4, sizeof(L4), &lenOut4);

retcode = SQLGetData(hstmt, 5, SQL_C_CHAR, L5, sizeof(L5), &lenOut5);

// retcode = SQLBindCol(hstmt, 6, SQL_C_CHAR, L6, sizeof(L6), &lenOut6);

retcode = SQLFetch(hstmt);

printf("%d\t%s\t%s\t%s\t%s\t%s\n", i, L1, L2, L3,L4,L5);

i++;

}

}

SQLFreeStmt(hstmt, SQL_DROP);

}

void partprint3()

{

unsigned char yuju[] = "select* from sc";

int i = 1;

SQLHSTMT hstmt;

char L1[50], L2[50], L3[50];

long lenOut1, lenOut2, lenOut3;

cout << "Grades of Students:" < retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

if (retcode == SQL_SUCCESS){

retcode = SQLExecDirect(hstmt, yuju, SQL_NTS);

retcode = SQLFetch(hstmt);

while (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO){

// retcode = SQLFetch(hstmt);

retcode = SQLGetData(hstmt, 1, SQL_C_CHAR, L1, sizeof(L1), &lenOut1);

retcode = SQLGetData(hstmt, 2, SQL_C_CHAR, L2, sizeof(L2), &lenOut2);

retcode = SQLGetData(hstmt, 3, SQL_C_CHAR, L3, sizeof(L3), &lenOut3);

retcode = SQLFetch(hstmt);

printf("%d\t%s\t%s\t%s\n", i, L1, L2, L3);

i ++;

}

}

SQLFreeStmt(hstmt, SQL_DROP);

}


Viewing all articles
Browse latest Browse all 6262

Trending Articles