注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

mie

 
 
 

日志

 
 

VC:数据库,SQLConfigDataSource创建DSN数据源  

2010-11-20 20:18:24|  分类: 数据库 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

VC:数据库,SQLConfigDataSource创建DSN数据源

http://zhanyonhu.blog.163.com/blog/static/161860442008726114717579/

 

新修正源码如下:


#include <odbcinst.h>
#pragma comment(lib, "odbccp32.lib")

//类声明
class CDatabaseODBCInterface
{
public:
 CDatabaseODBCInterface(void);
 virtual ~CDatabaseODBCInterface(void);

public:
 static BOOL CallSQLConfigDataSource_SQLServer(
  LPCTSTR dsn_name,
  LPCTSTR server_ip,
  LPCTSTR database_name,
  LPCTSTR description,
  LPCTSTR database_type,
  DWORD request
  );

 static BOOL  CreateDSN(
  LPCTSTR dsn_name,
  LPCTSTR server_ip,
  LPCTSTR database_name,
  LPCTSTR description=_T(""),
  LPCTSTR database_type=_T("SQL Server"),
  DWORD request=ODBC_ADD_SYS_DSN
  );

 static BOOL  ModifyDSN(
  LPCTSTR dsn_name,
  LPCTSTR server_ip,
  LPCTSTR database_name,
  LPCTSTR description=_T(""),
  LPCTSTR database_type=_T("SQL Server"),
  DWORD request=ODBC_CONFIG_SYS_DSN
  );

 static BOOL  ModifyOrCreateDSN(
  LPCTSTR dsn_name,
  LPCTSTR server_ip,
  LPCTSTR database_name,
  LPCTSTR description=_T(""),
  LPCTSTR database_type=_T("SQL Server"),
  DWORD request_create=ODBC_ADD_SYS_DSN,
  DWORD request_modify=ODBC_CONFIG_SYS_DSN
  );

 static BOOL DeleteDSN(
  LPCTSTR dsn_name,
  LPCTSTR database_type=_T("SQL Server"),
  DWORD request=ODBC_REMOVE_SYS_DSN
  );
};

 

//实现

#include "StdAfx.h"
#include "DatabaseODBCInterface.h"

CDatabaseODBCInterface::CDatabaseODBCInterface(void)
{
}


CDatabaseODBCInterface::~CDatabaseODBCInterface(void)
{
}

BOOL  CDatabaseODBCInterface::CallSQLConfigDataSource_SQLServer(
 LPCTSTR dsn_name,
 LPCTSTR server_ip,
 LPCTSTR database_name,
 LPCTSTR description,
 LPCTSTR database_type,
 DWORD request
 )
{
 USES_CONVERSION;
 TCHAR buf[MAX_PATH_LEN]={0};

 _stprintf(buf,
  _T("DSN=%s#") 
  _T("SERVER=%s#")
  _T("Description=%s#")
  _T("DATABASE=%s#;"),
  dsn_name,
  server_ip,
  description,
  database_name
  );

 CAtlString para=buf;
 int len=para.GetLength();
 para.Replace(_T('#'),_T('\0'));

 return SQLConfigDataSource(NULL, request, database_type,
  para.GetBuffer(len));
}

BOOL  CDatabaseODBCInterface::CreateDSN(
 LPCTSTR dsn_name,
 LPCTSTR server_ip,
 LPCTSTR database_name,
 LPCTSTR description,
 LPCTSTR database_type,
 DWORD request
 )
{
 return CallSQLConfigDataSource_SQLServer(
  dsn_name,
  server_ip,
  database_name,
  description,
  database_type,
  request
  );
}

BOOL  CDatabaseODBCInterface::ModifyDSN(
 LPCTSTR dsn_name,
 LPCTSTR server_ip,
 LPCTSTR database_name,
 LPCTSTR description,
 LPCTSTR database_type,
 DWORD request
 )
{
 return CallSQLConfigDataSource_SQLServer(
  dsn_name,
  server_ip,
  database_name,
  description,
  database_type,
  request
  );
}

BOOL  CDatabaseODBCInterface::ModifyOrCreateDSN(
 LPCTSTR dsn_name,
 LPCTSTR server_ip,
 LPCTSTR database_name,
 LPCTSTR description,
 LPCTSTR database_type,
 DWORD request_create,
 DWORD request_modify
 )
{
 if(!CallSQLConfigDataSource_SQLServer(
  dsn_name,
  server_ip,
  database_name,
  description,
  database_type,
  request_modify
  ))
 {
  return CallSQLConfigDataSource_SQLServer(
   dsn_name,
   server_ip,
   database_name,
   description,
   database_type,
   request_create
   );
 }

 return TRUE;
}

BOOL  CDatabaseODBCInterface::DeleteDSN(
 LPCTSTR dsn_name,
 LPCTSTR database_type,
 DWORD request
 )
{
 CAtlString dsn;
 dsn.Format(_T("DSN=%s\0"), dsn_name);

 return SQLConfigDataSource(NULL, request, database_type, dsn);
}

By:zhanyonhu

  评论这张
 
阅读(1263)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016