连接数据库的基类






1.30/5 (7投票s)
2005年9月25日
2分钟阅读

24950

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 ();
}
--------------------示例结束--------------------