C语言连接SQL数据库例子.docx

上传人:b****3 文档编号:5706335 上传时间:2023-05-09 格式:DOCX 页数:22 大小:51.24KB
下载 相关 举报
C语言连接SQL数据库例子.docx_第1页
第1页 / 共22页
C语言连接SQL数据库例子.docx_第2页
第2页 / 共22页
C语言连接SQL数据库例子.docx_第3页
第3页 / 共22页
C语言连接SQL数据库例子.docx_第4页
第4页 / 共22页
C语言连接SQL数据库例子.docx_第5页
第5页 / 共22页
C语言连接SQL数据库例子.docx_第6页
第6页 / 共22页
C语言连接SQL数据库例子.docx_第7页
第7页 / 共22页
C语言连接SQL数据库例子.docx_第8页
第8页 / 共22页
C语言连接SQL数据库例子.docx_第9页
第9页 / 共22页
C语言连接SQL数据库例子.docx_第10页
第10页 / 共22页
C语言连接SQL数据库例子.docx_第11页
第11页 / 共22页
C语言连接SQL数据库例子.docx_第12页
第12页 / 共22页
C语言连接SQL数据库例子.docx_第13页
第13页 / 共22页
C语言连接SQL数据库例子.docx_第14页
第14页 / 共22页
C语言连接SQL数据库例子.docx_第15页
第15页 / 共22页
C语言连接SQL数据库例子.docx_第16页
第16页 / 共22页
C语言连接SQL数据库例子.docx_第17页
第17页 / 共22页
C语言连接SQL数据库例子.docx_第18页
第18页 / 共22页
C语言连接SQL数据库例子.docx_第19页
第19页 / 共22页
C语言连接SQL数据库例子.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言连接SQL数据库例子.docx

《C语言连接SQL数据库例子.docx》由会员分享,可在线阅读,更多相关《C语言连接SQL数据库例子.docx(22页珍藏版)》请在冰点文库上搜索。

C语言连接SQL数据库例子.docx

C语言连接SQL数据库例子

#include

#include

#include

{

EXECSQLBEGINDECLARESECTION;

(2)

charfirstname[13];

|charuserid[9];|

charpasswd[19];

EXECSQLENDDECLARESECTION;

EXECSQLCONNECTTOsample;(3)

EXECSQL

SELECTFIRSTNMEINTO:

firstname(4)

FROMemployee

WHERELASTNAME='JOHNSON';(4)

printf("Firstname=%s\n",firstname);

EXECSQLCONNECTRESET;(5)

return0;

}

上面是一个简单的静态嵌入SQL语句的应用程序。

它包括了嵌入SQL的主要部分:

(1)中的includeSQLCA语句定义并描述了SQLCA的结构。

SQLCA用于应用程序和数据库之间的通讯,其中的SQLCODE返回SQL语句执行后的结果状态。

(2)在BEGINDECLARESECTION和ENDDECLARESECTION之间定义了宿主变量。

宿主变量可被SQL语句引用,也可以被C语言语句引用。

它用于将程序中的数据通过SQL语句传给数据

库管理器,或从数据库管理器接收查询的结果。

在SQL语句中,主变量前均有:

”标志以示区别。

(3)在每次访问数据库之前必须做CONNECT操作,以连接到某一个数据库上。

这时,应该保证数据

库实例已经启动。

(4)是一条选择语句。

它将表employee中的LASTNAME为“JOHNSON”的行数据的FIRSTNAME查出,并将它放在firstname变量中。

该语句返回一个结果。

可以通过游标返回多个结果。

当然,也可以包含update、insert和delete语句。

(5)最后断开数据库的连接。

从上例看出,每条嵌入式SQL语句都用EXECSQL开始,表明它是一条SQL语句。

这也是告诉预编译器在EXECSQL和;”之间是嵌入SQL语句。

如果一条嵌入式SQL语句占用多行,在C程序中可以用续行符“”。

c语言用vc连接sqlserver2000

时分享|

a

1.提取单条记录

〃#import"C:

\ProgramFiles'CommonFiles\System\ADO\msado15.dll"\

〃no_namespace,rename("EOF","adoEOF"),named_guids

CoInitialize(NULL);

_bstr_tvarSource="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=*.mdb";

〃_bstr_tvarSource="DataSource=myServerAddress;lnitial

Catalog=myDataBase;UserId=myUsername;Password=myPassword;"

_ConnectionPtrm_pConnection(_uuidof(Connection));

m_pConnection->Open(varSource,"","",adModeUnknow);

_RecordsetPtrm_pSet(_uuid(Recordset));

try{

m_pSet->Open(%%1,m_pConnection.GetlnterfacePtr()adOpenDynamic,adLockPessimistic,adCmdText);

}

catch(_com_error*e){

{

AfxMessageBox(e->ErrorMessage());

return;

}

_variant_tvar;

CString%%2="";

longfldc=m_pSet->GetFields()->GetCount();

longi=0;

try{

m_pSet->MoveFirst();

if(!

m_pSet->adoEOF)

{_

for(i=0;i

{

var=m_pSet->GetCollect((long)i);

var.ChangeType(VT_BSTR);

%%2+=var.bstrVal;

%%2+="";

}

〃m_pSet->MoveNext();

}

}

catch(_com_error*e){

AfxMessageBox(e->ErrorMessage());

deletee;

}

〃m_pSet->MoveFirst();

CoUninitialize(NULL);

2.单值比较

〃#import"C:

\ProgramFiles'CommonFiles\System\ADO\msado15.dll"\

〃no_namespace,rename("EOF","adoEOF"),named_guids

CoInitialize(NULL);

_bstr_tvarSource="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=*.mdb";

〃_bstr_tvarSource="DataSource=myServerAddress;lnitial

Catalog=myDataBase;UserId=myUsername;Password=myPassword;"

_ConnectionPtrm_pConnection(_uuidof(Connection));

m_pConnection->Open(varSource,"","",adModeUnknow);

_RecordsetPtrm_pSet(_uuid(Recordset));

try{

m_pSet->Open(%%1,m_pConnection.GetlnterfacePtr()adOpenDynamic,adLockPessimistic,adCmdText);

}

catch(_com_error*e){

{

AfxMessageBox(e->ErrorMessage());

return;

}

_variant_tvar;

try{

m_pSet->MoveFirst();

if(!

m_pSet->adoEOF)

{_

var=m_pSet->GetCollect((long)0);

var.ChangeType(VT_I2);

int%%3=var.intVal;

if(%%3==%%4)

{

%%5

}

〃m_pSet->MoveNext();

}

catch(_com_error*e){

AfxMessageBox(e->ErrorMessage());

deletee;

}

〃m_pSet->MoveFirst();

CoUninitialize(NULL);

3.显示表格

//#import"C:

\ProgramFiles\CommonFiles\System\ADO\msado15.dll"\

〃no_namespace,rename("EOF","adoEOF"),named_guids

Colnitialize(NULL);

_bstr_tvarSource="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=*.mdb";

〃_bstr_tvarSource="DataSource=myServerAddress;lnitial

Catalog=myDataBase;UserId=myUsername;Password=myPassword;"

_ConnectionPtrm_pConnection(_uuidof(Connection));

m_pConnection->Open(varSource,"","",adModeUnknow);

//打开属性为默认(adModeRead只读),adModeWrite(可写),adModeReadWrite(可读写)等)

_RecordsetPtrm_pSet(_uuid(Recordset));

try{

HRESULThr=m_pSet->Open(%%1,m_pConnection.GetlnterfacePtr(),

adOpenDynamic,adLockPessimistic,adCmdText);

}

catch(_com_error*e){

AfxMessageBox(e->ErrorMessage());

}

if(SUCCESSED(hr))

{

//表打开成功

}

FieldsPtrp_fields=m_pSet->Fields;

FieldPtrp_field;

_variant_tvar_index;

LPCSTRfield_name;

intindex=0;

_bstr_tbstr_field_name;

intcountfields=p_fields->GetCount();

CString*Column=newCString[countfields];

CListCtrl*pList=(CListCtrl*)GetDlgltem(%%1);//IDC_LIST_TABLEDATA

VERIFY(pList);

pList->DeleteAllltems();

for(index=0;index

{

var_index.vt=VT_I4;

var_index.IVal=index;

p_field=p_fields->ltem[var_index];

bstr_field_name=p_field->GetName();

field_name=(LPCSTR)bstr_field_name;

Column[index]=field_name;

intColumnWidth=Column[index].GetLength()*15;

pList->InsertColumn(index,field_name,LVCFMT_CENTER,ColumnWidth);

}一一

inti=0;

_bstr_tvCol;

〃pList->SetTextBkColor(RGB(122,200,122));

〃pList->SetTextColor(RGB(0,0,200));while(!

m_pSet->adoEOF)

{_

pList->Insert(i,atoi(i));

for(intj=0;j

{

vCol=m_pSet->GetCollect((long)j);pList->SetltemText(i,j,vCol);

}

m_pSet->MoveNext();

i++;

}

CoUninitialize(NULL);

C语言与SQLSERVE数据库

1.使用C语言来操作SQLSERVE数据库,采用ODB(开放式数据库连接进行数据的添加,修改,删除,查询等操作。

step1:

启动SQLSERVER务,例如:

HNHJ,开始菜单->运行->netstartmssqlserver

step2:

打开企业管理器,建立数据库test,在test库中建立test表(avarchar(200),bvarchar(200))

step3:

建立系统DSN开始菜单->运行->odbcad32,添力卩->SQLSERVER

名称:

csql,服务器:

HNHJ

使用用户使用登录ID和密码的SQLSERVER证,登录ID:

sa,密码:

更改默认的数据库为:

test

测试数据源,测试成功,即DNS添加成功。

2.cpp文件完整代码

C代码啊窃C

1.#include

2.#include

3.#include

4.#inelude

5.#inelude

6.#inelude

7.#inelude

8.

8.sqlhenvhenv=sql_null_henv;

9.sqlhdbehdbe1=sql_null_hdbc;

10.sqlhstmthstmtl=sql_null_hstmt;

12.

11./*

12.epp文件功能说明:

13.1.数据库操作中的添加,修改,删除,主要体现在SQL语句上

14.2.采用直接执行方式和参数预编译执行方式两种

15.*/

16.intmain(){

17.RETCODEreteode;

18.UCHARszDSN[SQL_MAX_DSN_LENGTH+1]="esql",

19.szUID[MAXNAME]="sa",

20.szAuthStr[MAXNAME]="";

21.//SQL语句

22.//直接SQL语句

23.UCHARsql[37]="insertintotestvalues('aaa','100')";

24.II预编译SQL语句

25.UCHARpre_sql[29]="insertintotestvalues(?

?

)";

26.II1.连接数据源

27.II1.环境句柄

28.reteode=SQLAlloeHandle(SQL_HANDLE_ENV,NULL,&henv);

29.reteode=SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,

30.(SQLPOINTER)SQL_OV_ODBC3,

31.SQL_IS_INTEGER);

32.II2.连接句柄

33.reteode=SQLAlloeHandle(SQL_HANDLE_DBC,henv,&hdbe1);

34.reteode=SQLConneet(hdbe1,szDSN,4,szUID,2,szAuthStr,0);

35.〃判断连接是否成功

36.if((reteode!

=SQL_SUCCESS)&&(reteode!

=SQL_SUCCESS_WITH_I

NFO)){

37.printf("连接失败!

\n");

38.}else{

39.II2.创建并执行一条或多条SQL语句

40.I*

41.1.分配一个语句句柄(statementhandle)

42.2.创建SQL语句

43.3.执行语句

44.4.销毁语句

45.*/

46.retcode=SQLAIIocHandle(SQL_HANDLE_STMT,hdbcl,&hstmt1);

47.〃第一种方式

48.〃直接执行

49.//添加操作

50.//SQLExecDirect(hstmt1,sql,37);

53.

51.〃第二种方式

52.〃绑定参数方式

53.chara[200]="bbb";

54.charb[200]="200";

55.SQLINTEGERp=SQL_NTS;

56.//1预编译

57.SQLPrepare(hstmt1,pre_sql,29);//第三个参数与数组大小相同,而不是数据库列相同

58.//2绑定参数值

59.SQLBindParameter(hstmt1,1,SQL_PARAM」NPUT,SQL_C_CHAR,SQL_CHAR,2

00,0,&a,0,&p);

60.SQLBindParameter(hstmt1,2,SQL_PARAM」NPUT,SQL_C_CHAR,SQL_CHAR,2

00,0,&b,0,&p);

61.//3执行

62.SQLExecute(hstmt1);

66.

63.printf(”操作成功!

");

64.〃释放语句句柄

65.SQLCloseCursor(hstmt1);

66.SQLFreeHandle(SQL_HANDLE_STMT,hstmt1);

71.

67.}

68.//3.断开数据源

69./*

70.1.断开与数据源的连接.

71.2.释放连接句柄.

72.3.释放环境句柄(如果不再需要在这个环境中作更多连接)

73.*/

74.SQLDisconnect(hdbc1);

75.SQLFreeHandle(SQL_HANDLE_DBC,hdbc1);

76.SQLFreeHandle(SQL_HANDLE_ENV,henv);

77.return(0);

78.}

C代码

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

18.

19.

20.

21.

22.

23.

24.

25.

26.

27.

28.

29.

30.

31.

32.

33.

34.

35.

36.

37.

38.

39.

40.

41.

42.

43.

#inelude

#inelude

#inelude

#inelude

#inelude

#inelude

#inelude

SQLHENVhenv=SQL_NULL_HENV;

SQLHDBChdbe1=SQL_NULL_HDBC;

SQLHSTMThstmt1=SQL_NULL_HSTMT;

/*

查询SQLSERVER数据库,1.条件查询,2.直接查询全部

*/

intmain(){

RETCODEreteode;

UCHARszDSN[SQL_MAX_DSN_LENGTH+1]="esql",szUID[MAXNAME]="sa",szAuthStr[MAXNAME]="";

UCHARsql1[39]="seleetbfromtestwherea='aaa":

UCHARsql2[35]="seleetbfromtestwherea=?

";

UCHARsql3[19]="seleetbfromtest";

reteode=SQLAlloeHandle(SQL_HANDLE_ENV,NULL,&henv);

reteode=SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,

SQL_IS_INTEGER);

reteode=SQLAlloeHandle(SQL_HANDLE_DBC,henv,&hdbe1);

〃1.连接数据源

reteode=SQLConneet(hdbe1,szDSN,4,szUID,2,szAuthStr,0);

if((reteode!

=SQL_SUCCESS)&&(reteode!

=SQL_SUCCESS_WITH_INFO)){

printf("连接失败!

");

}else{

〃2.创建并执行一条或多条SQL语句

/*

1.分配一个语句句柄(statementhandle)

2.创建SQL语句

3.执行语句

4.销毁语句

*/

reteode=SQLAlloeHandle(SQL_HANDLE_STMT,hdbe1,&hstmt1);

//第一种方式

44./*

45.〃直接执行

46.SQLExecDirect(hstmt1,sql1,39);

47.charlist[5];

48.SQLBindCol(hstmt1,1,SQL_C_CHAR,list,5,0);

49.SQLFetch(hstmt1);

50.printf("%s\n",list);

51.*/

52.

52.〃第二种方式

53./*

54.〃绑定参数方式

55.chara[200]="aaa";

56.SQLINTEGERp=SQL_NTS;

57.〃1.预编译

58.SQLPrepare(hstmt1,sql2,35);//第三个参数与数组大小相同,而不是数据库列相

59.〃2.绑定参数值

60.SQLBindParameter(hstmt1,1,SQL_PARAM」NPUT,SQL_C_CHAR,SQL_CHAR,2

00,0,&a,0,&p);

61.〃3.执行

62.SQLExecute(hstmtl);

63.charlist[5];

64.SQLBindCol(hstmt1,1,SQL_C_CHAR,list,5,0);

65.SQLFetch(hstmt1);

66.printf("%s\n",list);

67.*/

69.

68.〃第三种方式全部输出

69./*

70.1.确认一个结果集是否可用。

71.2.将结果集的列绑定在适当的变量上。

72.3.取得行

73.*/

74.〃3.检查结果记录(如果有的话)

75.SQLExecDirect(hstmt1,sql3,19);

76.charlist[5];

77.SQLBindCol(hstmt1,1,SQL_C_CHAR,list,5,0);

78.do{

79.retcode=SQLFetch(hstmt1);

80.if(retcode==SQL_NO_DATA){

81.break;

82.}

83.printf("%s\n",list);

84.}while

(1);

87.

85.〃释放语句句柄

86.SQLCIoseCursor(hstmtl);

87.SQLFreeHandle(SQL_HANDLE_STMT,hstmt1);

91.

88.}

93.

89.〃4.断开数据源

90./*

91.1.断开与数据源的连接.

92.2.释放连接句柄.

93.3.释放环境句柄(如果不再需要在这个环境中作更多连接)

94

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2