版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、连接到SAMPLE数据库,查询LASTNAME为JOHNSON的FIRSTNAME信息。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include "util.h" #include <sqlca.h> EXEC
2、SQL INCLUDE SQLCA; (1) main() EXEC SQL BEGIN DECLARE SECTION; (2) char firstname13; char userid9; char passwd19; EXEC SQL
3、60; END DECLARE SECTION; EXEC SQL CONNECT TO sample; (3) EXEC SQL SELECT FIRSTNME INTO :firstname (4) FROM employee WHERE LASTNAME
4、; = 'JOHNSON'(4) printf( "First name = %sn", firstname ); EXEC SQL CONNECT RESET; (5) return 0; 上面是一个简单的静态嵌入SQL语句的应用程序。它包括了嵌入SQL的主要部分
5、: (1)中的include SQLCA语句定义并描述了SQLCA的结构。SQLCA用于应用程序和数据库之间的通讯,其中的SQLCODE返回SQL语句执行后的结果状态。 (2)在BEGIN DECLARE SECTION和END DECLARE SECTION之间定义了宿主变量。宿主变量可被SQL语句引用,也可以被C语言语句引用。它用于将程序中的数据通过SQL语句传给数据库管理器,或从数 据库管理器接收查询的结果。在SQL语句中,主变量前均有“:”标志以示区别。
6、; (3)在每次访问数据库之前必须做CONNECT操作,以连接到某一个数据库上。这时,应该保证数据库实例已经启动。 (4)是一条选择语句。它将表employee中的LASTNAME为“JOHNSON”的行数据的FIRSTNAME查出,并将它放在 firstname变量中。该语句返回一个结果。可以通过游标返回多个结果。当然,也可以包含update、insert和delete语句。 (5)最后断开数据库的连接。 从上例看出,每条嵌入式SQL语句都用EXEC SQL开始,表明它是一条SQL语句。这
7、也是告诉预编译器在EXEC SQL和“;”之间是嵌入SQL语句。如果一条嵌入式SQL语句占用多行,在C程序中可以用续行符“”。 c语言用vc连接sql server 20002009/11/02 09:34 sql server 1.提取单条记录/#import "C:Program FilesCommon FilesSystemADOmsado15.dll" /no_namespace,rename("EOF","adoEOF"),named_guidsCoInitialize(NU
8、LL);_bstr_t varSource="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=*.mdb"/_bstr_t varSource="Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;"_ConnectionPtr m_pConnection(_uuidof(Connection);m_pConnection->Open(varSource,"&qu
9、ot;,"",adModeUnknow);_RecordsetPtr m_pSet(_uuid(Recordset);try m_pSet->Open(%1,m_pConnection.GetInterfacePtr()adOpenDynamic,adLockPessimistic,adCmdText);catch(_com_error *e)AfxMessageBox(e->ErrorMessage();return;_variant_t var;CString %2=""long fldc=m_pSet->GetFields()-&
10、gt;GetCount();long i=0;try m_pSet->MoveFirst();if(!m_pSet->adoEOF)for(i=0;i<fldc;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();delete e;/m_pSet->MoveFirst();CoUni
11、nitialize(NULL);2.单值比较/#import "C:Program FilesCommon FilesSystemADOmsado15.dll" /no_namespace,rename("EOF","adoEOF"),named_guidsCoInitialize(NULL);_bstr_t varSource="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=*.mdb"/_bstr_t varSource="Data Source=mySer
12、verAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;"_ConnectionPtr m_pConnection(_uuidof(Connection);m_pConnection->Open(varSource,"","",adModeUnknow);_RecordsetPtr m_pSet(_uuid(Recordset);try m_pSet->Open(%1,m_pConnection.GetInterfacePtr()adO
13、penDynamic,adLockPessimistic,adCmdText);catch(_com_error *e)AfxMessageBox(e->ErrorMessage();return;_variant_t var;try m_pSet->MoveFirst();if(!m_pSet->adoEOF)var=m_pSet->GetCollect(long)0);var.ChangeType(VT_I2);int %3=Val;if(%3=%4)%5/m_pSet->MoveNext();catch(_com_error *e)AfxMes
14、sageBox(e->ErrorMessage();delete e;/m_pSet->MoveFirst();CoUninitialize(NULL);3.显示表格/#import "C:Program FilesCommon FilesSystemADOmsado15.dll" /no_namespace,rename("EOF","adoEOF"),named_guidsCoInitialize(NULL);_bstr_t varSource="Provider=Microsoft.Jet.OLEDB.4.
15、0;Data Source=*.mdb"/_bstr_t varSource="Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;"_ConnectionPtr m_pConnection(_uuidof(Connection);m_pConnection->Open(varSource,"","",adModeUnknow);/打开属性为默认(adModeRead(只读),adMo
16、deWrite(可写),adModeReadWrite(可读写)等)_RecordsetPtr m_pSet(_uuid(Recordset);try HRESULT hr=m_pSet->Open(%1,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockPessimistic,adCmdText);catch(_com_error *e)AfxMessageBox(e->ErrorMessage();if(SUCCESSED(hr)/表打开成功FieldsPtr p_fields=m_pSet->Fields;Field
17、Ptr p_field;_variant_t var_index;LPCSTR field_name;int index=0;_bstr_t bstr_field_name;int countfields=p_fields->GetCount();CString *Column=new CStringcountfields;CListCtrl *pList=(CListCtrl*)GetDlgItem(%1);/IDC_LIST_TABLEDATAVERIFY(pList);pList->DeleteAllItems();for(index=0;index<countfiel
18、ds;index+)var_index.vt=VT_I4;var_index.IVal=index;p_field=p_fields->Itemvar_index;bstr_field_name=p_field->GetName();field_name=(LPCSTR)bstr_field_name;Columnindex=field_name;int ColumnWidth=Columnindex.GetLength()*15;pList->InsertColumn(index,field_name,LVCFMT_CENTER,ColumnWidth);int i=0;_
19、bstr_t vCol;/pList->SetTextBkColor(RGB(122,200,122);/pList->SetTextColor(RGB(0,0,200);while(!m_pSet->adoEOF)pList->Insert(i,atoi(i);for(int j=0;j<countfields;j+)vCol=m_pSet->GetCollect(long)j);pList->SetItemText(i,j,vCol);m_pSet->MoveNext();i+;CoUninitialize(NULL); C语言与SQL SE
20、RVER数据库1.使用C语言来操作SQL SERVER数据库,采用ODBC开放式数据库连接进行数据的添加,修改,删除,查询等操作。 step1:启动SQLSERVER服务,例如:HNHJ,开始菜单 ->运行 ->net start mssqlserver step2:打开企业管理器,建立数据库test,在test库中建立test表(a varchar(200),b varchar(200) step3:建立系统DSN,开始菜单 ->运行 ->odbcad32, 添加->SQL SERVER 名称:csq
21、l,服务器:HNHJ 使用用户使用登录ID和密码的SQLSERVER验证,登录ID:sa,密码: 更改默认的数据库为:test . 测试数据源,测试成功,即DNS添加成功。2.cpp文件完整代码/#save.cpp#C代码 1. #include <stdio.h> 2. #include <string.h> 3. #include <windows
22、.h> 4. #include <sql.h> 5. #include <sqlext.h> 6. #include <sqltypes.h> 7. #include <odbcss.h> 8.
23、; 9. sqlhenv henv = sql_null_henv; 10. sqlhdbc hdbc1 = sql_null_hdbc; 11. sqlhstmt hstmt1 = sql_null_hstmt; 12. 13. /* 14. &
24、#160;cpp文件功能说明: 15. 1.数据库操作中的添加,修改,删除,主要体现在SQL语句上 16. 2.采用直接执行方式和参数预编译执行方式两种 17. */ 18. int main() 19. RETCODE retcode; 20.
25、; UCHAR szDSNSQL_MAX_DSN_LENGTH+1 = "csql", 21. szUIDMAXNAME = "sa",
26、160; 22. szAuthStrMAXNAME = "" 23. /SQL语句 24. /直接SQL语句
27、60; 25. UCHAR sql37 = "insert into test values('aaa','100')" 26. /预编译SQL语句 27. UCHAR pre_s
28、ql29 = "insert into test values(?,?)" 28. /1.连接数据源 29. /1.环境句柄 30. retcode = SQLAllocHandle
29、160; (SQL_HANDLE_ENV, NULL, &henv); 31. retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, 32. &
30、#160; (SQLPOINTER)SQL_OV_ODBC3, 33. SQL_IS_INTEGER); 34
31、. /2.连接句柄 35. retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc1); 36. retc
32、ode = SQLConnect(hdbc1, szDSN, 4, szUID, 2, szAuthStr, 0); 37. /判断连接是否成功 38.
33、60; if ( (retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO) )
34、39. printf("连接失败!n"); 40. else 41. /2.创建并执行一条或多条SQL语句 42.
35、0; /* 43. 1.分配一个语句句柄(statement handle) 44. 2.创建SQL语句 45. 3.执行语句 46.
36、 4.销毁语句 47. */ 48. retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, &hstmt1);
37、160;49. /第一种方式 50. /直接执行 51. /添加操作 52. /SQLExecDirect (hstmt1,sql,3
38、7); 53. 54. /第二种方式 55. /绑定参数方式 56. char a200="bbb
39、" 57. char b200="200" 58. SQLINTEGER p = SQL_NTS; 59. &
40、#160;/1预编译 60. SQLPrepare(hstmt1,pre_sql,29); /第三个参数与数组大小相同,而不是数据库列相同 61. /2绑定参数值 62. SQLBindParameter(hstmt1,1,SQL
41、_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.
42、160; SQLExecute(hstmt1); 66. 67. printf("操作成功!"); 68. /释放语句句柄
43、 69. SQLCloseCursor (hstmt1); 70. SQLFreeHandle (SQL_HANDLE_STMT, hstmt1); 71. 72.
44、0; 73. /3.断开数据源 74. /* 75. 1.断开与数据源的连接. 76. 2.释放连接句柄. 77. 3.释放环境句柄 (如果不再需要在这个环境中作更多连接) 78.
45、 */ 79. SQLDisconnect(hdbc1); 80. SQLFreeHandle(SQL_HANDLE_DBC, hdbc1); 81. SQLFreeHandle(SQL_HANDLE_ENV, henv);
46、; 82. return(0); 83. #include <stdio.h> #include <string.h> #include <windows.h> #include <sql.h> #include <sqlext.h> #include <sqltypes.h> #include <odbcss.h> SQLHENV h
47、env = SQL_NULL_HENV; SQLHDBC hdbc1 = SQL_NULL_HDBC; SQLHSTMT hstmt1 = SQL_NULL_HSTMT; /*cpp文件功能说明:1.数据库操作中的添加,修改,删除,主要体现在SQL语句上2.采用直接执行方式和参数预编译执行方式两种*/int main() RETCODE retcode; UCHARszDSNSQL_MAX_DSN_LENGTH+1 = "csql", szUIDMAXNAME = "sa", szAuthStrMAXNAME = "" /SQL语句/
48、直接SQL语句UCHARsql37 = "insert into test values('aaa','100')"/预编译SQL语句UCHARpre_sql29 = "insert into test values(?,?)"/1.连接数据源/1.环境句柄retcode = SQLAllocHandle (SQL_HANDLE_ENV, NULL, &henv); retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODB
49、C3, 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.分配一个语句
50、句柄(statement handle)2.创建SQL语句3.执行语句4.销毁语句*/retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, &hstmt1); /第一种方式/直接执行/添加操作/SQLExecDirect (hstmt1,sql,37);/第二种方式/绑定参数方式char a200="bbb"char b200="200"SQLINTEGER p = SQL_NTS;/1预编译SQLPrepare(hstmt1,pre_sql,29); /第三个参数与数组大小相同,而不是数据库列相同/2
51、绑定参数值SQLBindParameter(hstmt1,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,200,0,&a,0,&p);SQLBindParameter(hstmt1,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,200,0,&b,0,&p);/3 执行SQLExecute(hstmt1);printf("操作成功!");/释放语句句柄SQLCloseCursor (hstmt1);SQLFreeHandle (SQL_HANDLE_STMT, hstmt1); /3.
52、断开数据源/* 1.断开与数据源的连接. 2.释放连接句柄. 3.释放环境句柄 (如果不再需要在这个环境中作更多连接) */SQLDisconnect(hdbc1); SQLFreeHandle(SQL_HANDLE_DBC, hdbc1); SQLFreeHandle(SQL_HANDLE_ENV, henv); return(0); /#list.cpp#C代码 1. #include <stdio.h> 2. #include <string.h> &
53、#160; 3. #include <windows.h> 4. #include <sql.h> 5. #include <sqlext.h> 6. #include <sqltypes.h> 7. #include <
54、;odbcss.h> 8. 9. SQLHENV henv = SQL_NULL_HENV; 10. SQLHDBC hdbc1 = SQL_NULL_HDBC; 11. SQLHSTMT hstmt1 = SQL_NULL_HSTMT;
55、12. 13. /* 14. 查询SQLSERVER数据库,1.条件查询,2.直接查询全部 15. */ 16. int main() 17. RETCODE retcode; 18. UCHAR szDSNSQ
56、L_MAX_DSN_LENGTH+1 = "csql", 19. szUIDMAXNAME = "sa", 20.
57、0; szAuthStrMAXNAME = "" 21. UCHAR sql139 = "select b from test where a = 'aaa'"
58、 22. UCHAR sql235 = "select b from test where a = ? " 23. UCHAR sql319 = "select b from test"
59、 24. 25. retcode = SQLAllocHandle (SQL_HANDLE_ENV, NULL, &henv); 26. retcode
60、60;= SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, 27. (SQLPOINTER)SQL_OV_ODBC3, 28.
61、0; SQL_IS_INTEGER); 29. retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc1);
62、 30. /1.连接数据源 31. retcode = SQLConnect(hdbc1, szDSN, 4, szUID, 2, szAuthStr,
63、60;0); 32. if ( (retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO)
64、) 33. printf("连接失败!"); 34. else 35. /2.创建并执行
65、一条或多条SQL语句 36. /* 37. 1.分配一个语句句柄(statement handle) 38. 2.创建SQL语句 39. 3.执行
66、语句 40. 4.销毁语句 41. */ 42. retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1,
67、60; &hstmt1); 43. /第一种方式 44. /* 45. /直接执行 46.
68、;SQLExecDirect (hstmt1,sql1,39); 47. char list5; 48. SQLBindCol(hstmt1, 1, SQL_C_CHAR, list, 5, 0); 49.
69、;SQLFetch(hstmt1); 50. printf("%sn",list); 51. */ 52. 53. /第二种
70、方式 54. /* 55. /绑定参数方式 56. char a200="aaa" 57. SQLINTEGER &
71、#160; p = SQL_NTS; 58. /1.预编译 59. SQLPrepare(hstmt1,sql2,35); /第三个参数与数组大小相同,而不是数据库列相同 60. /2.绑
72、定参数值 61. SQLBindParameter(hstmt1,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,200,0,&a,0,&p); 62. /3.执行 63. SQLExecute(hstmt1); 64.
73、 char list5; 65. SQLBindCol(hstmt1, 1, SQL_C_CHAR, list, 5, 0); 66. SQLFetch(hstmt1); 67.
74、 printf("%sn",list); 68. */ 69. 70. /第三种方式全部输出 71. /* 72.
75、 1.确认一个结果集是否可用。 73. 2.将结果集的列绑定在适当的变量上。 74. 3.取得行 75. */ 76.
76、160; /3.检查结果记录(如果有的话) 77. SQLExecDirect (hstmt1,sql3,19); 78. char list5; 79. SQLBindCol(hstmt1,
77、60;1, SQL_C_CHAR, list, 5, 0); 80. do 81. retcode = SQLFetch(hstmt1); 82.
78、0; if(retcode = SQL_NO_DATA) 83. break; 84. 85.
79、160; printf("%sn",list); 86. while(1); 87. 88. /释放
80、语句句柄 89. SQLCloseCursor (hstmt1); 90. SQLFreeHandle (SQL_HANDLE_STMT, hstmt1); 91. 92.
81、; 93. 94. /4.断开数据源 95. /* 96. 1.断开与数据源的连接. 97. 2.释放连接句柄. 98. 3.释放环境句柄 (如果不再需要在这个环境中作
82、更多连接) 99. */ 100. SQLDisconnect(hdbc1); 101. SQLFreeHandle(SQL_HANDLE_DBC, hdbc1); 102. SQLFreeHandle(SQL_HANDLE_ENV
83、, henv); 103. return(0); 104. 创建数据源的过程代码:#include<stdlib.h>#inlcude<stdio.h>#include<windows.h>#include<sql.h>#include<sqlext.h>#include<Sqltypes.h>#define SNO_LEN 30#de
84、fine NAME_LEN 50#define DEPART_LEN 100#define SSEX_LEN 5int main() /*Step 1 定义句柄和变量 */ /以king开头的表示的是连接KingbaseES的变量 /以server开头的表示的是连接SQLSERVER的变量SQLHENV kinghenv,serverhenv;SQLHDBC kinghdbc,serverhdbc;SQLHSTMT kinghstmt,serverhstmt;SQLRE
85、TURN ret;SQLCHAR sNameNAME_LEN,sDepartDEPART_LEN, sSexSSEX_LEN,sSnoSNO_LEN;SQLINTEGER sAge;SQLINTEGRR cbAge=0,cbSno=SQL_NTS,cbSex=SQL_NTS, cbName=SQL_NTS,cb
86、Depart=SQL_NTS; /*Step 2 初始化环境*/ret=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&kinghenv);ret=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&setverhenv);ret=SQLSetEnvAttr(kinghenv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0);ret=SQLSetEnvAttr(serverhenv,SQL_ATTR_ODBC_VERSION,(void*)S
87、QL_OV_ODBC3,0); /*Step 3 建立连接*/ret=SQLAllocHandle(SQL_HANDLE_DBC,kinghenv,&kinghdbc);ret=SQLAllocHandle(SQL_HANDLE_DBC,serverhenv,&serverhdbc);ret=SQLConnect(kinghdbc,"KingbaseES ODBC",SQL_NTS,"SYSTEM", SQL_NTS,"MANAGER",SQL_NTS);if(!SQL_SUCCEEDED(ret) return -1; /连接失败时返回错误值;ret=SQLConnect(serverhdbc,"SQLServer",SQL_NTS,"sa",
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年第一学期徐州市期末化学试卷及答案
- 2023年度河南省医用耗材及体外诊断试剂集中采购工作实施方案
- 2023年陕西省普通高中学业水平考试化学试卷
- 电力电子期末试题.及其规范标准答案
- 内科学:泌尿系统疾病考试试题
- 内科学(医学高级):呼吸系统疾病考试资料(题库版)
- 比阿培南基础及临床研究
- 2024年04月广东省江门市蓬江区总工会2024年招考3名工会工作者笔试历年(难与易错考点)高频考题后附答案详解
- 2024年04月安徽省阜阳市2024年引进366名企事业单位人才笔试历年(难与易错考点)高频考题后附答案详解
- 2024年04月四川成都市大邑县卫生健康局所属11家事业单位招考聘用43人笔试历年(难与易错考点)高频考题后附答案详解
- 汽修专业工匠精神的培育
- 《流动资产》PPT课件.ppt
- 腹腔镜阑尾切除术护士配合
- 最全版导数专题精华知识点总结
- 银行柜员代码表常用熟记
- 机械设计课程设计---驱动离心鼓风机的V带传动
- 初中音乐考核方案(共5页)
- 医用耗材分类目录 (低值 ╱ 高值)
- 2020山西中考模拟百校联考试卷(一)道德与法治答题卡
- 留学人员学历认证授权声明模板
- 浅谈小学数学低年级解决问题能力培养
评论
0/150
提交评论