以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 C/C++编程思想 』  (http://bbs.xml.org.cn/list.asp?boardid=61)
----  动态生成数据库连接文件类  (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=87476)


--  作者:葛靖青001
--  发布时间:11/4/2010 4:56:00 PM

--  动态生成数据库连接文件类
1、首先定义一个数据库连接结构:

  struct db

  {

  char Server[20];

  char Database[20];

  char UserId[20];

  char Password[20];

  };

  2、生成数据库连接文件:

  BOOL CUdlFile::CreateUdlFile(LPCTSTR lpFileName)

  {

  CFile fUdl;

  BOOL bResult;

  CString s1,s2,s3;

  int m_Length;

  //set value

  s1="[oledb]";

  s2="; Everything after this line is an OLE DB initstring";

  s3.Format("Provider=SQLOLEDB.1;Password=%s;
  Persist Security Info=True;
  User ID=%s;Initial Catalog=%s;
  Data Source=%s",

  m_dbParameter.Password,

  m_dbParameter.UserId,

  m_dbParameter.Database,

  m_dbParameter.Server);

  //open file

  bResult=fUdl.Open (lpFileName,CFile::modeCreate|CFile::modeWrite);

  if(!bResult) return FALSE;

  LPWSTR m_Buffer;

  m_Buffer = (LPWSTR)malloc(2 * sizeof(WCHAR));

  m_Buffer[0]=0xFEFF; //flag of UNICODE file

  fUdl.Write (m_Buffer,2);

  free(m_Buffer);

  fUdl.Write (L"[oledb]",14); //14为[oldb]的长度X2

  fUdl.Write(L"\r\n",4);

  fUdl.Write (L"; Everything after this line is an OLE DB initstring",104); //104为字符串长度X2

  fUdl.Write(L"\r\n",4);

  m_Length=s3.GetLength ();

  m_Buffer = (LPWSTR)malloc((m_Length + 1) * sizeof(WCHAR));

  MultiByteToWideChar(CP_ACP, 0, s3, m_Length, m_Buffer, m_Length);

  fUdl.Write (m_Buffer,s3.GetLength ()*2);

  fUdl.Write(L"\r\n",4);

  free(m_Buffer);

  m_Buffer = NULL;

  fUdl.Close ();

  return TRUE;

  }

  3、删除数据库连接文件:

  BOOL CUdlFile::DeleteUdlFile(LPCTSTR lpFileName)

  {

  return ::DeleteFile(lpFileName);

  }


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms