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

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

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

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

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

C语言连接SQL数据库例子

连接到SAMPLE数据库,查询LASTNAME为JOHNSON的FIRSTNAME信息。

 

 #include  

 #include  

 #include  

 #include "util.h" 

 #include  

 EXEC SQL INCLUDE SQLCA; 

(1) 

 main() 

 { 

 EXEC SQL BEGIN DECLARE SECTION; 

(2) 

 char firstname[13]; 

 char userid[9]; 

 char passwd[19]; 

 EXEC SQL END DECLARE SECTION; 

 EXEC SQL CONNECT TO sample; (3) 

 EXEC SQL 

SELECT FIRSTNME INTO :

firstname (4)  

 FROM employee 

 WHERE LASTNAME = 'JOHNSON';(4) 

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

 EXEC SQL CONNECT RESET; (5) 

 return 0; 

 } 

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

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

 

 

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

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

 

 

(2)在BEGIN DECLARE SECTION和END DECLARE SECTION之间定义了宿主变量。

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

它用于将程序中的数据通过SQL语句传给数据库管理器,或从数据库管理器接收查询的结果。

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

”标志以示区别。

 

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

这时,应该保证数据库实例已经启动。

 

 (4)是一条选择语句。

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

该语句返回一个结果。

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

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

 

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

 

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

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

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

c语言用vc连接sqlserver2000

2009/11/0209:

34  [sqlserver ]

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;InitialCatalog=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.GetInterfacePtr()

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;InitialCatalog=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.GetInterfacePtr()

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

CoInitialize(NULL);

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

//_bstr_tvarSource="DataSource=myServerAddress;InitialCatalog=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.GetInterfacePtr(),

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*)GetDlgItem(%%1);//IDC_LIST_TABLEDATA

VERIFY(pList);

pList->DeleteAllItems();

for(index=0;index

{

var_index.vt=VT_I4;

var_index.IVal=index;

p_field=p_fields->Item[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->SetItemText(i,j,vCol);

}

m_pSet->MoveNext();

i++;

}

CoUninitialize(NULL);

C语言与SQLSERVER数据库

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

 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文件完整代码

//##########################save.cpp##########################

C代码

 

1.#include      

2.#include      

3.#include      

4.#include      

5.#include      

6.#include      

7.#include      

8.  

9.sqlhenv henv = sql_null_henv;     

10.sqlhdbc hdbc1 = sql_null_hdbc;     

11.sqlhstmt hstmt1 = sql_null_hstmt;     

12.  

13./* 

14.    cpp文件功能说明:

 

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

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

17.*/  

18.int main(){     

19.    RETCODE retcode;     

20.    UCHAR   szDSN[SQL_MAX_DSN_LENGTH+1]   =   "csql",     

21.            szUID[MAXNAME]   =   "sa",     

22.            szAuthStr[MAXNAME]   =   "";    

23.    //SQL语句  

24.        //直接SQL语句  

25.    UCHAR   sql[37] = "insert into test values('aaa','100')";  

26.        //预编译SQL语句  

27.    UCHAR   pre_sql[29] = "insert into test values(?

?

)";  

28.    //1.连接数据源  

29.        //1.环境句柄  

30.    retcode   =   SQLAllocHandle   (SQL_HANDLE_ENV,   NULL,   &henv);     

31.    retcode   =   SQLSetEnvAttr(henv,   SQL_ATTR_ODBC_VERSION,     

32.                  (SQLPOINTER)SQL_OV_ODBC3,     

33.                  SQL_IS_INTEGER);     

34.        //2.连接句柄    

35.    retcode   =   SQLAllocHandle(SQL_HANDLE_DBC,   henv,   &hdbc1);     

36.    retcode   =   SQLConnect(hdbc1,   szDSN,   4,   szUID,   2,   szAuthStr,   0);      

37.    //判断连接是否成功  

38.    if   (   (retcode   !

=   SQL_SUCCESS)   &&   (retcode   !

=   SQL_SUCCESS_WITH_INFO)   )   {       

39.        printf("连接失败!

\n");  

40.    }   else   {     

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

42.        /* 

43.        1.分配一个语句句柄(statement handle) 

44.        2.创建SQL语句 

45.        3.执行语句 

46.        4.销毁语句 

47.        */  

48.        retcode   =   SQLAllocHandle(SQL_HANDLE_STMT,   hdbc1,   &hstmt1);     

49.        //第一种方式  

50.        //直接执行  

51.        //添加操作  

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

53.          

54.        //第二种方式  

55.        //绑定参数方式  

56.        char a[200]="bbb";  

57.        char b[200]="200";  

58.        SQLINTEGER   p   =   SQL_NTS;  

59.        //1预编译  

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

61.        //2绑定参数值  

62.        SQLBindParameter(hstmt1,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,200,0,&a,0,&p);  

63.        SQLBindParameter(hstmt1,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,200,0,&b,0,&p);  

64.        //3 执行  

65.        SQLExecute(hstmt1);  

66.          

67.        printf("操作成功!

");  

68.        //释放语句句柄  

69.        SQLCloseCursor (hstmt1);  

70.        SQLFreeHandle (SQL_HANDLE_STMT, hstmt1);  

71.      

72.    }     

73.    //3.断开数据源  

74.    /* 

75.     1.断开与数据源的连接. 

76.     2.释放连接句柄. 

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

78.    */  

79.    SQLDisconnect(hdbc1);      

80.    SQLFreeHandle(SQL_HANDLE_DBC, hdbc1);     

81.    SQLFreeHandle(SQL_HANDLE_ENV, henv);     

82.    return(0);     

83.}     

#include

#include

#include

#include

#include

#include

#include

SQLHENVhenv=SQL_NULL_HENV;

SQLHDBChdbc1=SQL_NULL_HDBC;

SQLHSTMThstmt1=SQL_NULL_HSTMT;

/*

cpp文件功能说明:

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

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

*/

intmain(){

RETCODEretcode;

UCHARszDSN[SQL_MAX_DSN_LENGTH+1]="csql",

szUID[MAXNAME]="sa",

szAuthStr[MAXNAME]="";

//SQL语句

//直接SQL语句

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

//预编译SQL语句

UCHARpre_sql[29]="insertintotestvalues(?

?

)";

//1.连接数据源

//1.环境句柄

retcode=SQLAllocHandle(SQL_HANDLE_ENV,NULL,&henv);

retcode=SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,

(SQLPOINTER)SQL_OV_ODBC3,

SQL_IS_INTEGER);

//2.连接句柄

retcode=SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc1);

retcode=SQLConnect(hdbc1,szDSN,4,szUID,2,szAuthStr,0);

//判断连接是否成功

if((retcode!

=SQL_SUCCESS)&&(retcode!

=SQL_SUCCESS_WITH_INFO)){

printf("连接失败!

\n");

}else{

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

/*

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

2.创建SQL语句

3.执行语句

4.销毁语句

*/

retcode=SQLAllocHandle(SQL_HANDLE_STMT,hdbc1,&hstmt1);

//第一种方式

//直接执行

/

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

当前位置:首页 > 高等教育 > 院校资料

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

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