C语言连接SQL数据库例子范本模板.docx
- 文档编号:24182973
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:22
- 大小:33.37KB
C语言连接SQL数据库例子范本模板.docx
《C语言连接SQL数据库例子范本模板.docx》由会员分享,可在线阅读,更多相关《C语言连接SQL数据库例子范本模板.docx(22页珍藏版)》请在冰豆网上搜索。
C语言连接SQL数据库例子范本模板
连接到SAMPLE数据库,查询LASTNAME为JOHNSON的FIRSTNAME信息。
#include 〈stdio.h〉
#include #include 〈string.h〉 #include "util。 h” #include h> 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〈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()); 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〈countfields;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 〈stdio。 h〉 2.#include 〈string.h〉 3.#include 〈windows。 h〉 4.#include h〉 5.#include h> 6.#include 〈sqltypes。 h〉 7.#include 〈odbcss。 h> 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〈stdio.h> #include h> #include h> #include h> #include #include h> #include h> 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); //第一种方式 //直接执行 //添加操作 //SQLExecDirect(hstmt1,sql,37); //第二种方式 //绑定参数方式 cha
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 连接 SQL 数据库 例子 范本 模板