您的位置:首页 > 其它

服务端管理工具编写(二)——公共函数及配置文件读写

2015-04-13 15:03 453 查看
在编写工具前,先弄个配置文件,保存一些基本信息,同时要编写一部分公共函数,如数据库连接和读取等,这些函数是所有数据库操作的基础,用得很多,把他们编译成一个单独的DLL文件比较合算。

一、配置文件

配置文件其实就只要保存一点信息,就是IIS的目录,这样通过IIS目录就可以找到数据库的本地绝对路径了。

在MeetingManage工程文件夹里依次打开MeetingManage->bin->Debug文件夹,是不是发现编写的出来的程序可执行文件就在这里?好,在这里新建一个文本文档,把它改名为Config.xml,注意,是要把扩展名为xml,用记事本或其他文本编辑器打开,输入配置内容。

Config.xml内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<AppConfig>
<IISPath>D:\DocumentsVSWork\MeetingSys\MeetingSys</IISPath>
</AppConfig>


IISPath里面内容根据实际填写,就是MeetingSys工程的里面的文件夹的本地绝对路径。

二、公共函数

因为要把公共函数单独编译成一个DLL文件,需要新建一个项目,在IDE的“解决方案资源管理器”里面的“解决方案MeetingManage”那里用鼠标右键单击,在弹出菜单中选择添加->新建项目,在弹出的窗口中,模板选择windows,目标选择类库,把名称改为MeetingData,当然,也可以用其它名字,这个是DLL的命名空间,以后引用要用到这个名字,自己记住就行了。做完这个操作后,解决方案里面就有两个项目了,一个是MeetingData,一个是MeetingManage,前者就是公共函数,后者是管理工具的主体。

在解决方案资源管理器中打开MeetingData项目,看到到Class.cs的文件,为方便记忆,把它改名为MdbData.cs,不改也可以没影响的,双击打开这个文件,先添加几个引用,这个是C#的基本操作,以后不再讲了,因为用到不同的系统函数,随时会添加的。

添加引用就是添加几个using项目,在cs的最顶端,系统已经默认添加了3个了,由于公共函数中涉及到xml文件操作和数据操作,所以添加几个需要引用的文件。代码如下

using System.Xml;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
在using ×××下方有个namespace ×××的,这个就是命名空间,上文已经讲到,这里不多讲,在命名空间下方有行public class ×××,这个就是类,把它改名为public class MdbData,把数据库所有公共函数都编写在这个类里面。

先来个读取XML文档,获取数据库地址的函数。这个函数就是读取上文讲到的配置文件的里面保存的数据库地址,注意,这里其实是读取出IIS的目录,不能直接使用的。

public static string sIISPath() //读取XML文档,获取数据库地址
{
XmlDocument xXmlDoc = new XmlDocument();
try
{
string sPath = "";
xXmlDoc.Load(@"Config.xml");
sPath = xXmlDoc.SelectSingleNode(@"/AppConfig/IISPath").InnerText;
return sPath;
}
catch
{
return null;
}
}
上述代码简单讲解一下,先定义一个XmlDocument变量xXmlDoc用于操作,给xXmlDoc加载同一下目录下的Config.xml文件,这里有点要说明的是字符串前面加了了个@,表示字符串里面的"/"等作为字符使用,不进行转义,这个以后会用到很多的。xXmlDoc.SelectSingleNode是读取指定节点里面的内容。关于XML文档读取需要深入研究的请百度。

IIS目录读取出来后,就需要数据连接了,因此在弄个数据库连接的函数。

public static OleDbConnection DataConn() //连接数据库,返回OleDB连接对象
{
if (sIISPath() != null)
{
string strCon = @" Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + sIISPath() + @"\App_Data\MeetingData.mdb";
OleDbConnection myConn = new OleDbConnection(strCon);
return myConn;
}
else
return null;

}
这里注意要和MeetingSys项目配合,在定义连接字符串时对数据库地址进行了补齐,就是最后添加的@"\App_Data\MeetingData.mdb"是进行地址补全的。

连接好数据库后就开始进行数据读写操作了,先弄个根据SQL指令获取数据库内容的,一般都是以表的形式返回,所以就弄个返回数据表的。

public static DataTable GetDataTable(string SQLComm)//根据SQL指令获取数据表
{
OleDbConnection oConn = DataConn();
oConn.Open();
OleDbCommand Cmd = oConn.CreateCommand();
Cmd.CommandText = SQLComm;
DataSet DS = new DataSet();
OleDbDataAdapter adapter = new OleDbDataAdapter(Cmd);
adapter.Fill(DS);
DataTable DT = DS.Tables[0];
oConn.Close();
return DT;
}
注意,这个函数没有对数据库连接是否成功进行检验,项目赶时间,我懒得写了,将就使用。还有可以返回DataSet的,也懒得写的,因为我用DataTable比较多。

有时候需要执行指定的SQL指令才操作数据库,所以弄个函数比较适合。

public static int SQLCom(string sqlStr)//在数据库中执行指定SQL语句,返回影响行数。
{
OleDbConnection oConn = DataConn();
oConn.Open();
OleDbCommand Cmd = new OleDbCommand();
Cmd.CommandText = sqlStr;
Cmd.Connection = oConn;
int SQLComCount = Cmd.ExecuteNonQuery();
Cmd.Clone();
oConn.Close();
return SQLComCount;
}
系统用用得最多的是根据某个指定的ID,读取唯一一条记录的某个字段内容,如根据会议室ID读取会议室的名称,所以弄个通用的函数很有必要。

public static string GetAny(string TableName, string FieldName, string IDName, string ID)//在数据库中指定表具备唯一ID记录中获取指定字段内容
{
string Site_Str = "Select " + FieldName + " From " + TableName + " Where " + IDName + "=" + ID;
DataTable DT = GetDataTable(Site_Str);
string str = "";
if (DT != null)
{
str = DT.Rows[0][FieldName].ToString();
}
return str.Trim();
}
这个函数用了4个参数,第一个是数据库的表名,第二个是要获取数据的字段名,第三个是具有唯一性的ID的字段名,第四个就是这个ID的值。

数据操作很多都是更新数据或插入数据,每次写这些SQL指令都很头痛,尤其是字段多的时候,弄个方便记忆的生成函数比较爽一点。

生成更新指令的函数如下

public static string SQLUpdate(string sTableName, string[] sField, string[] sValue, string sCondition)//根据条件,生成update的SQL指令
{
string SQLStr = "";
SQLStr = "Update " + sTableName + " set ";
if (sField.Length == sValue.Length)
{
for (int i = 0; i < sField.Length; i++)
{
SQLStr += sField[i] + "=" + sValue[i] + ",";
}
}
else
SQLStr = "";
SQLStr = SQLStr.Substring(0, SQLStr.Length - 1);
SQLStr += " where " + sCondition;
return SQLStr;
}
这里用了4个变量,第一个是表名,表示需要操作的表,第二、三个标量都是字符串数组,前者是需要更新的字段名,后者是对应值,最后一个是筛选的条件。注意这只是生成SQL指令,不会执行的,需要执行要配合SQLCom函数。

生成插入指令的函数如下

public static string SQLInsert(string sTableName, string[] sField, string[] sValue)//根据条件,生成Insert的SQL指令
{
string SQLStr = "";
SQLStr = "Insert Into  " + sTableName + " ( ";
if (sField.Length == sValue.Length)
{
for (int i = 0; i < sField.Length; i++)
{
SQLStr += sField[i] + ",";
}
SQLStr = SQLStr.Substring(0, SQLStr.Length - 1) + ") Values(";
for (int i = 0; i < sField.Length; i++)
{
SQLStr += sValue[i] + ",";
}
SQLStr = SQLStr.Substring(0, SQLStr.Length - 1) + ")";
}
else
SQLStr = "";
return SQLStr;
}
和更新的指令差不多,少了个筛选条件而已。

公共函数和配置文件读写基本就这些内容了,如果后面还有需要的在添加或修改。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: