65.9K
CodeProject 正在变化。 阅读更多。
Home

连接数据库的基类

starIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIconemptyStarIcon

1.30/5 (7投票s)

2005年9月25日

2分钟阅读

viewsIcon

24950

downloadIcon

274

为常用数据库设计的完美接口,可轻松连接到大多数类型的数据库,例如 MS Access、MS SQL Server 等。 不再需要担心 ADO COM 的可怕复杂接口,轻松实现您的操作逻辑代码...

引言

  很久以前我就对 ADO 感到害怕,因为它愚蠢的大量接口使用。 所以请相信我能处理它,那段难以想象的噩梦时期已经过去了。 我一直相信一切都由简洁和容易的东西决定,所以我必须用 ADO 重新设计用户界面。 一切都很容易! 简单的连接、简单的断开连接、简单的执行、简单的 GET_FIELDVALUE...,以及为您所有人提供的简单扩展和维护,所有行为都清晰明了,您不再需要关心大量 COM 类型。 总而言之,太棒了!

  欢迎您尽可能地修改它们,请记住我们的目标是“一切都简单,简单就是完美”。

----------------以下示例-----------------

void AccessDB ()
{
 TField oField;
 long lRecordCount = 0;
 
 LPCSTR lpDataSource = "D:\\userdata.MDB";
 LPCSTR lpProvider = "Microsoft.Jet.OLEDB.4.0";
 LPCSTR lpUser = "";
 LPCSTR lpPassword = "SayHelloToYou";
 TDataBase database (lpDataSource, lpProvider, lpUser, lpPassword);
 if (!database.Connect ())
 {
  TRACE ("连接到 DB 服务器失败!\n %s\n", database.GetErrorMessage ());
  return;
 }

 if (!database.ExecSQL ("SELECT Field1, Field2, Field3, Field4 FROM TableToAccess"))
 {
  TRACE ("执行 SQL 脚本失败!\n %s\n", database.GetErrorMessage ());
  goto FinalDo;
 }

 if (database.IsEmpty ())
  goto FinalDo;

// lRecordCount = database.GetRecordCount ();
// TRACE ("记录数=%d\n", lRecordCount);

 if (!database.First())
  TRACE ("移动到第一个失败\n");

 while (!database.Eof())
 {
  if (database.GetFieldByName ("Field1", oField))
   TRACE ("name:Field1=%s\n", (oField.IsNULL) ? "<NULL>" : oField.StringValue);
  if (database.GetFieldByIndex (0, oField))
   TRACE ("index:Field1=%s\n", (oField.IsNULL) ? "<NULL>" : oField.StringValue);

  if (database.GetFieldByName ("Field2", oField))
   TRACE ("name:Field2=%u\n", (oField.IsNULL) ? 0xFFFFFFFF : oField.IntValue);
  if (database.GetFieldByIndex (1, oField))
   TRACE ("index:Field2=%u\n", (oField.IsNULL) ? 0xFFFFFFFF : oField.IntValue);

  if (database.GetFieldByName ("Field3", oField))
   TRACE ("name:Field3=%s\n", (oField.IsNULL) ? "<NULL>" : oField.DateTimeValue.Format ("%Y-%m-%d"));
  else
   TRACE ("%s\n", database.GetErrorMessage());
  if (database.GetFieldByIndex (2, oField))
   TRACE ("index:Field3=%s\n", (oField.IsNULL) ? "<NULL>" : oField.DateTimeValue.Format ("%Y-%m-%d"));

  if (database.GetFieldByName ("Field4", oField))
   TRACE ("name:Field4=%.2e\n", (oField.IsNULL) ? 0.00 : oField.DoubleValue);
  if (database.GetFieldByIndex (3, oField))
   TRACE ("index:Field4=%.2e\n", (oField.IsNULL) ? 0.00 : oField.DoubleValue);
  

  if (!database.Next ())
   TRACE ("移动到下一个失败\n");
 }
 
FinalDo
 database.DisConnect (); 
}

 

--------------------示例结束--------------------

 

© . All rights reserved.