C语言连接SQL数据库例子Word格式文档下载.docx
《C语言连接SQL数据库例子Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言连接SQL数据库例子Word格式文档下载.docx(22页珍藏版)》请在冰点文库上搜索。
![C语言连接SQL数据库例子Word格式文档下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/bffd1aff-c02e-415f-9a9f-d7abf339f185/bffd1aff-c02e-415f-9a9f-d7abf339f1851.gif)
(5)
return
0;
}
上面是一个简单的静态嵌入SQL语句的应用程序.它包括了嵌入SQL的主要部分:
(1)中的include
SQLCA语句定义并描述了SQLCA的结构。
SQLCA用于应用程序和数据库之间的通讯,其中的SQLCODE返回SQL语句执行后的结果状态。
(2)在BEGIN
SECTION和END
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;
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
Jet.OLEDB。
4。
0;
DataSource=*.mdb”;
//_bstr_tvarSource=”DataSource=myServerAddress;
InitialCatalog=myDataBase;
UserId=myUsername;
"
m_pConnection—>
Open(varSource,””,””,adModeUnknow);
Open(%%1,m_pConnection.GetInterfacePtr()
catch(_com_error*e){
AfxMessageBox(e->
ErrorMessage());
return;
try{
m_pSet—〉MoveFirst();
m_pSet-〉adoEOF)
var=m_pSet—〉GetCollect((long)0);
var.ChangeType(VT_I2);
int%%3=var.intVal;
if(%%3==%%4)
%%5
//m_pSet->
catch(_com_error*e){
AfxMessageBox(e—>
3。
显示表格
//#import"
C:
//no_namespace,rename(”EOF”,”adoEOF"
_bstr_tvarSource="
Provider=Microsoft.Jet.OLEDB.4。
DataSource=*.mdb"
;
Password=myPassword;
m_pConnection-〉Open(varSource,"
””,adModeUnknow);
//打开属性为默认(adModeRead(只读),adModeWrite(可写),adModeReadWrite(可读写)等)
_RecordsetPtrm_pSet(_uuid(Recordset));
HRESULThr=m_pSet-〉Open(%%1,m_pConnection.GetInterfacePtr(),
adOpenDynamic,adLockPessimistic,adCmdText);
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;
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〈countfields;
j++)
vCol=m_pSet-〉GetCollect((long)j);
SetItemText(i,j,vCol);
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
<
sql。
5.#include
sqlext.h〉
6.#include
sqltypes。
7.#include
〈odbcss。
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.
采用直接执行方式和参数预编译执行方式两种
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.
sql[37]
insert
into
test
values('
aaa’,'
100’)”;
26.
//预编译SQL语句
27.
pre_sql[29]
values(?
,?
)”;
28.
//1。
连接数据源
29.
环境句柄
30.
retcode
SQLAllocHandle
(SQL_HANDLE_ENV,
NULL,
&henv);
31.
SQLSetEnvAttr(henv,
SQL_ATTR_ODBC_VERSION,
32.
(SQLPOINTER)SQL_OV_ODBC3,
33.
SQL_IS_INTEGER);
34.
//2.连接句柄
35.
SQLAllocHandle(SQL_HANDLE_DBC,
henv,
&hdbc1);
36.
SQLConnect(hdbc1,
szDSN,
4,
szUID,
2,
szAuthStr,
0);
37.
//判断连接是否成功
38.
if
(
(retcode
!
SQL_SUCCESS)
&
SQL_SUCCESS_WITH_INFO)
)
{
39.
printf(”连接失败!
\n”);
40.
}
else
{
41.
//2.创建并执行一条或多条SQL语句
42.
/*
43.
分配一个语句句柄(statement
handle)
44.
2.创建SQL语句
45.
执行语句
46.
4.销毁语句
47.
*/
48.
SQLAllocHandle(SQL_HANDLE_STMT,
hdbc1,
&hstmt1);
49.
//第一种方式
50.
//直接执行
51.
//添加操作
52.
//SQLExecDirect
(hstmt1,sql,37);
53.
54.
//第二种方式
55.
//绑定参数方式
56.
char
a[200]="
bbb”;
57.
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.
断开与数据源的连接.
76.
释放连接句柄。
77.
释放环境句柄
(如果不再需要在这个环境中作更多连接)
78.
*/
79.
SQLDisconnect(hdbc1);
80.
SQLFreeHandle(SQL_HANDLE_DBC,
hdbc1);
81.
SQLFreeHandle(SQL_HANDLE_ENV,
henv);
82.
return(0);
83.}
#include〈stdio.h>
#include〈string.h>
#include<
windows.h>
#include〈sql.h>
#include〈sqlext。
#include<
sqltypes.h>
odbcss.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]="
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,&
retcode=SQLConnect(hdbc1,szDSN,4,szUID,2,szAuthStr,0);
//判断连接是否成功
if((retcode!
=SQL_SUCCESS)&&
(retcode!
=SQL_SUCCESS_WITH_INFO)){
printf("
连接失败!
}else{
//2.创建并执行一条或多条SQL语句
/*
1。
分配一个语句句柄(statementhandle)
2。
创建SQL语句
3.执行语句
4.销毁语句
*/
retcode=SQLAllocHandle(SQL_HANDLE_STMT,hdbc1,&hstmt1);
//第一种方式
//直接执行
//添加操作
//SQLExecDirect(hstmt1,sql,37);
//第二种方式
//绑定参数方式
chara[