连接到SAMPLE数据库,查询LASTNAME为JOHNSON的FIRSTNAME信息。 #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( \ 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连接sql server 2000
2009/11/02 09:34 [sql server ]
1.提取单条记录
//#import \//no_namespace,rename(\CoInitialize(NULL); _bstr_t varSource=\Source=*.mdb\//_bstr_t varSource=\Catalog=myDataBase;User Id=myUsername;Password=myPassword;\_ConnectionPtr m_pConnection(_uuidof(Connection)); m_pConnection->Open(varSource,\_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()->GetCount(); long i=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()); delete e; } //m_pSet->MoveFirst(); CoUninitialize(NULL); 2.单值比较 //#import \//no_namespace,rename(\CoInitialize(NULL); _bstr_t varSource=\Source=*.mdb\//_bstr_t varSource=\Catalog=myDataBase;User Id=myUsername;Password=myPassword;\_ConnectionPtr m_pConnection(_uuidof(Connection)); m_pConnection->Open(varSource,\_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; 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()); delete e; } //m_pSet->MoveFirst(); CoUninitialize(NULL); 3.显示表格 //#import \//no_namespace,rename(\ CoInitialize(NULL); _bstr_t varSource=\Source=*.mdb\//_bstr_t varSource=\Catalog=myDataBase;User Id=myUsername;Password=myPassword;\_ConnectionPtr m_pConnection(_uuidof(Connection)); m_pConnection->Open(varSource,\//打开属性为默认(adModeRead(只读),adModeWrite(可写),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; FieldPtr 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 CString[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; int ColumnWidth=Column[index].GetLength()*15; pList->InsertColumn(index,field_name,LVCFMT_CENTER,ColumnWidth); } int i=0; _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 vCol=m_pSet->GetCollect((long)j); pList->SetItemText(i,j,vCol); } m_pSet->MoveNext(); i++; } CoUninitialize(NULL); C语言与SQL SERVER数据库 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 名称:csql,服务器:HNHJ 使用用户使用登录ID和密码的SQLSERVER验证,登录ID:sa,密码: 更改默认的数据库为:test ... 测试数据源,测试成功,即DNS添加成功。 2.cpp文件完整代码 //##########################save.cpp########################## C代码 1. #include