2、使用SQL函数进行连接。
对于1、配置数据源,配置完以后就可以编程 *** 作数据库了。
对于2、使用SQL函数进行连接,参考代码如下:
#include<windows.h>
#include<sql.h>
#include<sqlext.h>
void main()
{
HENV henv //环境句柄
HDBC hdbc //数据源句柄
HSTMT hstmt //执行语句句柄
unsigned char datasource[]="数据源名称" //即<a href="https://www.baidu.com/s?wd=ODBC&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YLrHIWuWRsPWTvujD4P1Nb0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1mYP1R1n1cknW6sPWbzrj03Pf" target="_blank" class="baidu-highlight">ODBC</a>源中设置的源名称
unsigned char user[]= "用户名" //数据库的帐户名
unsigned char pwd[]= "密码" //数据库的密码
unsigned char search[]="select xm from stu where xh=0"
SQLRETURN retcode//记录各SQL函数的返回情况
// 分配环境句柄
retcode= SQLAllocEnv(&henv) // 等介于 SQLAllocHandle(SQL_HANDLE_ENV, SQL_<a href="https://www.baidu.com/s?wd=NULL&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YLrHIWuWRsPWTvujD4P1Nb0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1mYP1R1n1cknW6sPWbzrj03Pf" target="_blank" class="baidu-highlight">NULL</a>_HANDLE, &henv)
// 设置ODBC环境版本号为3.0
retcode= SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0)
// 分配连接句柄
retcode= SQLAllocConnect(henv,&hdbc)// 等介于 SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc)
//设置连接属性,登录超时为*rgbValue秒(可以没有)
// SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)(rgbValue), 0)
//直接连接数据源
// 如果是windows身份验证,第二、三参数可以是<a href="https://www.baidu.com/s?wd=NULL&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YLrHIWuWRsPWTvujD4P1Nb0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1mYP1R1n1cknW6sPWbzrj03Pf" target="_blank" class="baidu-highlight">NULL</a>,也可以是任何字串
//SQL_NTS 即 "<a href="https://www.baidu.com/s?wd=Null&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YLrHIWuWRsPWTvujD4P1Nb0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1mYP1R1n1cknW6sPWbzrj03Pf" target="_blank" class="baidu-highlight">Null</a>-Terminated String"
retcode= SQLConnect(hdbc,datasource, SQL_NTS, user, SQL_NTS , pwd, SQL_NTS )
//分配语句句柄
retcode= SQLAllocStmt(hdbc,&hstmt) // 等介于 SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt)
//直接执行查询语句
retcode=SQLExecDirect(hstmt,search,SQL_NTS)
//将数据缓冲区绑定数据库中的相应字段(i是查询结果集列号,queryData是绑定缓冲区,BUFF_LENGTH是缓冲区长度)
SQLBindCol(hstmt, i, SQL_C_CHAR, queryData[i-1], BUFF_LENGTH, 0)
//遍历结果集到相应缓冲区 queryData
SQLFetch(hstmt)
/*
*对遍历结果的相关 *** 作,如显示等
*/
//注意释放顺序,否则会造成未知错误!
SQLFreeHandle(SQL_HANDLE_STMT, hstmt)
SQLDisconnect(hdbc)
SQLFreeHandle(SQL_HANDLE_DBC, hdbc)
SQLFreeHandle(SQL_HANDLE_ENV, henv)
}
代码看上去很复杂,其实都可以直接复制。其中需要改的是数据源名称、数据库用户名、数据库密码和SQL语句。
然后就是SQLFetch后得到结果集后,如何使用的问题了。
在下面的注释部分 填写你的处理代码即可。
/*
*对遍历结果的相关 *** 作,如显示等
*/
下边是个简单的 *** 作,需要别的函数自己往里添加就行了//命名空间点不出来就要添加引用
using
System.Data
using
System.Data.Common
using
System.Data.SqlServerCe
public
class
Database
{
private
SqlCeConnection
OleConn
=
null
private
SqlCeCommand
cmd
=
null
private
SqlCeDataAdapter
da
private
DataSet
ds
private
bool
open()
{
if
(OleConn
==
null)
{
OleConn
=
new
SqlCeConnection("Data
Source
="+数据库的路径+"TSZR.sdfpwd="+数据库密码)
}
if
(OleConn.State
!=
ConnectionState.Open)
{
try
{
OleConn.Open()
}
catch
{
return
false
}
}
return
true
}
private
void
close()
{
if
(OleConn.State
==
ConnectionState.Open)
{
OleConn.Close()
}
}
///
<summary>
///
获取DataSet
///
</summary>
///
<param
name="sql">执行的SQL</param>
///
<returns>符合条件的数据集</returns>
public
DataSet
GetDataSet(string
sql)
{
try
{
if
(open())
{
cmd
=
OleConn.CreateCommand()
da
=
new
SqlCeDataAdapter()
ds
=
new
DataSet()
cmd.CommandText
=
sql
SqlCeDataAdapter
ad
=
new
SqlCeDataAdapter(sql,
OleConn)
ad.Fill(ds)
return
ds
}
else
{
return
null
}
}
catch(Exception
ex)
{
throw
new
Exception("执行失败!"+
ex.Message)
}
finally
{
close()
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)