odbc

syz 2000-03-20 10:25:00
昨天去书店开书,就是没找到关于ODBC的书。我很想知道他是怎麽访问别 的数据库的。
听说他就是在数据库和用户之间的一个调和层,就象驱动程序似的。但我不知道他可不可以象操作数据库一样操作?当然用编程的方法VC、VB 。该怎麽做?谢谢!
我不是电脑专业,所以学什麽都是那麽初级。
...全文
338 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hank 2000-04-01
  • 打赏
  • 举报
回复
请查询:
http://www.bhp.com.cn/asp/book/p0101cpl.asp?ID00=0204&ID01=juJ-qcn9&ID02=x009~$*odbc*$
或:http://www.bhp.com.cn/
Hank 2000-03-22
  • 打赏
  • 举报
回复
清华大学出版社/希望出版社均有一套关于ODBC的书,都是翻译的微软公司的,都是两本,写的很详细!大32K,只要舍得Money即可!(两本好像要150)
std_ream 2000-03-21
  • 打赏
  • 举报
回复
在windows中使用比较简单,在window控制面版中有关于ODBC数据源的设置,ODBC使用步骤如下:
1.在控制面版中设定数据源
2.使用VC创建一个工程
3.利用VC的ODBC类(CDataBase,CRecordSet)编写操作程序
CDataBase与数据源建立连接,CRecordSet操作数据
可参考VC帮助MSDN

DataBind 2000-03-21
  • 打赏
  • 举报
回复
请参考以下代码(从数据源WriteWchar中的表account中提取UserName和PassWord字段的记录)
SQLHENV henv = NULL;
SQLHSTMT hstmt = NULL;
SQLHDBC hdbc = NULL;
SQLRETURN sqlreturn;

sqlreturn = SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv);
// 创建odbc环境句柄
sqlreturn = SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);
// 设置odbc版本号
sqlreturn = SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);
// 创建odbc连接句柄
sqlreturn = SQLConnect(hdbc, (unsigned char *)"WriteWchar", SQL_NTS,
(unsigned char *)"sa", SQL_NTS, (unsigned char *)"", SQL_NTS);
// 建立odbc连接
sqlreturn = SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt);
// 创建sql语句的语句句柄
sqlreturn = SQLPrepare(hstmt,(unsigned char *)"select UserName,PassWord from account ",SQL_NTS);
sqlreturn = SQLExecute(hstmt);
// 直接执行
short ColsCount = 0;
sqlreturn = SQLNumResultCols(hstmt,&ColsCount);
//得到返回结果集的列数
long RowsCount = 0;
sqlreturn = SQLRowCount(hstmt,&RowsCount);
//得到返回结果集的行数******不是列数******
char szUserName[16];
char szPassWord[13];
memset(szUserName,0,16);
memset(szPassWord,0,13);
//以上是存放绑定数据的缓冲区
SDWORD cb;
memset(&cb,0,sizeof(SDWORD));
sqlreturn = SQLBindCol(hstmt,1,SQL_C_CHAR,szUserName,16,&cb);
sqlreturn = SQLBindCol(hstmt,2,SQL_C_CHAR,szPassWord,13,&cb);
sqlreturn = SQLFetch(hstmt);
while (sqlreturn == SQL_SUCCESS)
{
char * pDisplay = new char[60];
memset(pDisplay,0,60);
sprintf(pDisplay,"UserName = \"%s\" And PassWord = \"%s\"",szUserName,szPassWord);
AfxMessageBox(pDisplay);
delete pDisplay;
sqlreturn = SQLFetch(hstmt);
}

SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);

From DataBind
syz 2000-03-21
  • 打赏
  • 举报
回复
谢谢!我用SDK 不用类库。有比较详细点的吗?
Un1 2000-03-20
  • 打赏
  • 举报
回复
参见:

http://www.computerworld.com.cn/99/tips/9901/01227_11.asp

http://www.midatech.com/csdn/expert/TopicView.asp?id=3511
torney 2000-03-20
  • 打赏
  • 举报
回复
可以从微软的数据访问站点看一看,或下载MDAC SDK
http://www.microsoft.com/data/
haihong 2000-03-20
  • 打赏
  • 举报
回复
因为odbc内容很少,所以没有对应的书,但是每本书基本都会提到odbc.
用的话要先装odbc驱动程序,然后在控制面板-》odbc中设置数据源,
再用楼上的说的就行了,可以和别的数据库相同操作
DataBind 2000-03-20
  • 打赏
  • 举报
回复
如果用vc的sdk风格程序:请如以下步骤操作:
1、分配odbc环境句柄
2、设置odbc驱动程序的版本
3、分配odbc的连接句柄
4、建立odbc连接
5、分配sql语句的句柄
6、执行语句
7、取到行数据
祥见msdn中关于odbc操作的文档。
可察看函数:SQLAllocHandle、SQLSetEnvAttr、SQLConnect、SQLExecDirect、SQLFetch、SQLGetData等。

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧