用c语言怎么连接数据库呢?

用c语言怎么连接数据库呢?,第1张

1、配置ODBC数据源

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[]="数据源名称" //即源中设置的源名称

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_NULL

, &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身份验证,第二、三参数可以是

,也可以是任何字串

//SQL_NTS 即 "

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 Server 代理无法启动并显示错误 18456

症状

SQL Server 代理服务无法启动,同时您可能会在 Windows 事件查看器中看到以下错误信息:

SQLServerAgent could not be started (reason:Unable to connect to serverSQLServerAgent cannot start).

另外,如果试图从命令行启动 SQL Server 代理服务(例如,C:\MSSQL7\BINN\>sqlagent -c –v),也可能在 C:\MSSQL7\LOG\SQLAGENT.OUT 文件中看到以下错误信息:

7/13/99 2:07:43 PM - ?[129] SQLServerAgent starting under Windows NT service control

7/13/99 2:07:43 PM - ![298] SQLServer Error:18456, Login failed for user 'DomainName\UserName'.[SQLSTATE 28000]

7/13/99 2:07:43 PM - ![000] Unable to connect to serverSQLServerAgent cannot start

7/13/99 2:07:44 PM - ?[098] SQLServerAgent terminated (normally)

原因

BUILTIN\Administrators 登录没有访问 SQL Server 的权限或 BUILTIN\Administrators 登录已从 SQL Server 中删除,而 SQLAgent 服务正在 LocalSystem 帐户下启动。

如果 SQLAgent 服务在 SQL Server 企业管理器中单独列出的一个域帐户下或计算机帐户下启动,并且此帐户具有系统管理员 (sysadmin) 权限,则不会发生该问题。

替代方法

要将 BUILTIN\Administrators 帐户重新添加到 SQL Server 中,请启动 SQL 企业管理器。进入 \Servername\Security\Logins 并向 BUILTIN\Administrators 用户授予访问权限。

如果确实要拒绝 Windows NT 管理员对 SQL Server 的访问,可以删除 BUILTIN\Administrators 帐户。首先,将用于 SQL 代理服务的登录帐户作为 SQL Server 登录帐户来添加,并为该帐户分配系统管理员 (sa) 角色。然后从 BUILTIN\Administrators 帐户调用系统管理员 (sysadmin) 角色,或从 SQL 企业管理器中的 Logins 彻底删除 BUILTIN\Administrators 帐户。

原因太多了,例如:

服务器名错误

用户名错误,

密码错误

服务器端口错误

服务器没有运行

服务器设置错误

你需要做的是:确认服务器运行,确认参数正确


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10800588.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存