使用 .NET 处理 SQL Server 和 FoxPro 数据库






2.48/5 (12投票s)
本文有助于快速开发数据库处理应用程序,适用于桌面和 Web 应用程序。
引言
本文旨在为读者提供快速开发数据库处理应用程序的方法。它不仅适用于桌面应用程序,也适用于 Web 应用程序。此 DLL 以 C# 语言编写,但您可以在编译后将其用于任何其他语言。
我没有提交 DLL 文件,因为我知道它在可以使用之前还需要进行一些修改(连接字符串等)。它可以读取文本文件中的连接字符串,但对于 Web 应用程序来说并不理想,因此您可能需要对其 Cnn
类进行一些更改。
本文还帮助了那些将 SQL Server 或 .dbf (FoxPro) 用作数据库的用户。它的一个类 CopySqlAsDbf
能够将表从 SQL 转换为 dbf。要使用其 FoxPro 功能,意味着要使用其 Dbf
和 SqlDbfClass
类;您需要下载免费的 Microsoft ODBC 驱动程序。(本文假定您已安装该驱动程序)
此 DLL 主要用于基于 Windows 的项目,但当我需要在有限的时间内完成大量工作时,我也将其用于 Web 项目。
此 DLL 的主要优点之一是它能加速您的开发过程,并且非常易于理解。它基本上有四个类。
Cnn
类Dbf
类Sql
类SqlDbfClass
类
顾名思义,所有类都用于不同的目的。
让我们逐个类来看
Cnn 类
它有两个方法,名为cnnStringValue //for sql server connection string.
public string cnnStringValue()
{
try
{
TextReader tr = new StreamReader("connectionString.txt");
cnnString=tr.ReadLine().ToString().Trim();
}
catch//(Exception ex)
{
//do nothing
//throw new Exception(ex.Message);
}
return cnnString;
}
在这里,我从文本文件中读取 connectionstring
,这对于软件部署来说更方便,因为有时客户端正在使用代理,或者有不同的数据库服务器,所以我们允许他们从文本文件中设置值。在 Cnn
类中,变量 cnnString
具有预定义的值,因此如果找不到文件或发生任何其他错误,它将返回预定义的值。这是因为我没有通过抛出异常来处理错误。如果您需要,或者认为这更方便,可以这样做。
DBFcnnString //用于 dbf(foxpro) 连接字符串
。它只是返回 dbfconnection
字符串,这几乎是固定的。创建时,您应该牢记应用程序的启动路径。例如
Cnn conn=new Cnn(ApplicationStartupPath.Trim());
// will call the following methods:
public Cnn(string mvarSysProjPath)
{
//string mvarSysProjPath =Application.StartupPath;
DBFString="Provider=MSDASQL/SQLServer ODBC;Driver={
Microsoft Visual FoxPro Driver};" + "SourceType=DBF;SourceDB=" +
mvarSysProjPath.Trim() + ";InternetTimeout=300000;
Transact Updates=True";
}
并将 DBFString
变量设置为 connectionString
值。现在您可以简单地接收该值
string strConnect=conn.DBFcnnString();
在我的 DLL 中,这两个方法都用于内部方法调用。这意味着其他类都可以使用它们。您可以根据您的需求使用这些函数。
Dbf 类
它有三个方法,名为
ExecuteDbfQuery
ReturnDbfTableMaxid
ReturnDbfTableValue
除了这些方法之外,此类还有一个参数化构造函数和一个属性,两者用于相同的任务。您在使用此类时可以选择其中任何一个。现在我们一个接一个地看这些方法。
ExecuteDbfQuery
ExecuteDbfQuery
:设置其 ApplicationPath 属性或使用参数化构造函数后,我们可以使用此类中的任何方法。
public Dbf(string path)
{
ApplicationStartupPath=path;
}
创建 Dbf
类对象时,应将应用程序启动路径作为参数传递。
Dbf objDbf = new Dbf(Application.StartupPath);
public void ExecuteDbfQuery(string DbfQuery)
方法接收 DbfQuery
作为字符串。它可以执行 FoxPro 数据库中的 Insert
、update
和 delete
查询。只需像这样将您的 insert 查询传递给 DbfQuery
objDbf.ExecuteDbfQuery(
"insert into tablename(column1,column2,……..)
values('"+value1+"','"+value2+"',……..)");
ReturnDbfTableMaxid
ReturnDbfTableMaxid
:这是此类另一个有用的函数。它返回最大 ID 或任何自动增量字段的值。您只需传递tablename
和该值所属的columnName
。
public int ReturnDbfTableMaxid(string tableName , string columnName)
ReturnDbfTableValue
public string ReturnDbfTableValue(string tableName, string columnName,
string condition)
这也是此类中一个非常有用的函数。它基于 where
条件返回单个字段值。您只需传递 tablename
、columnname
(该值所属的字段)和 where
条件。有一个带有 where 关键字的条件变量;此函数会生成查询并返回该值。
Sql 类
它有三个方法,名为
ExecuteSqlQuery
ReturnSqlTableMaxid
ReturnSqlTableValue
与 Dbf
类类似,Sql
类也具有相同的处理 SQL 数据库的方法。您也可以根据需要添加更多方法。这些方法的简要介绍如下:如果您将包含连接字符串的文本文件放在 DLL 所在的文件夹中(通常是 bin 文件夹),则可以使用这些函数的任何方面,或者您可以手动设置 Cnn
类构造函数中的 cnnString
变量,如下所示。
public Cnn()
{
cnnString="Server=servername/ipaddress;UID=username;
PWD=password;Database=databasename";
}
设置此参数后,您可以编译此 DLL 并将其引用到您的项目中。方法如下。
ExecuteSqlQuery
public void ExecuteSqlQuery(string sqlQuery)
此类直接接受 SQL insert、update、delete 查询并执行它们,如果发生错误,它还会抛出异常,您可以选择打印它。方法调用如下。
Sql objSql=new Sql();
objSql.ExecuteSqlQuery("update tablename set name='"+nameVariable+"'");
ReturnSqlTableMaxid
public int ReturnSqlTableMaxid(string tableName , string columnName)
此类返回 SQL 表的最大自动生成 ID。它只接受 tablename
和该自动生成 ID 的 columnname
。
方法调用如下。
Sql objSql=new Sql();
int maxid = objSql.ReturnSqlTableMaxid("tablename", "columnname");
ReturnSqlTableValue
public string ReturnSqlTableValue(string tableName, string columnName,
string condition)
此类根据条件返回单个 sqltable 列值。此方法接受 tablename
、columnName
、where
条件,并返回所需的值。方法调用如下。
Sql objSql=new Sql();
objSql.ReturnSqlTableValue("tablename", "columnname",
"where name='"+nameVariable+"'");
SqlDbfClass.cs 文件
实际上,它有一个 SqlToDbfConvert
类,只有一个方法和一个属性,setApplicationPath
。此属性用于设置应用程序启动路径,而 CopySqlAsDbf
方法用于将 SQL 表数据复制到 dbf 表,但它有一些限制。
public void CopySqlAsDbf(string SqlQuery, string DbfTableName)
此方法接受 SQL select 查询和 dbf 表名(仅名称),您想将数据复制到其中。它会自动创建表并转储数据。
在这里,我使用 SqlQuery
变量而不是 SQL 表名,因为您也可以在此处使用 where 条件,因此您可以将过滤后的数据放入 dbf 表中。
使用此 DLL 的步骤
- 在解决方案资源管理器中右键单击,您会看到“添加引用”选项。选择“添加引用”,如下图所示。
- 现在它看起来像这样。
- 现在您可以按如下方式使用它。
using sqlDbfTransactions;
如果使用 C#,则使用上述代码。您可以使用 imports 关键字以相同的方式在 VB.NET 中使用它。即使它是用 C# 编写的。
结论
当需要快速开发时,此 DLL 对我帮助很大,不仅适用于桌面,也适用于 Web,并且对于那些使用 FoxPro 数据库或将 FoxPro 和 SQL Server 混合用作数据库的用户来说,它也非常有用。
稍后,我将根据组织的要求在此 DLL 中添加更多功能。您也应该这样做。我使用此 DLL 在很短的时间内创建了许多动态网站。希望您也喜欢它。