数据库编程:C应用开发与XML数据处理
立即解锁
发布时间: 2025-08-23 00:48:40 阅读量: 1 订阅数: 5 

### 数据库编程:C# 应用开发与 XML 数据处理
#### 1. CUser 类完善需求
虽然已经为 CUser 类添加了不少代码,但它还未完成。当前需要添加代码以实现数据集行的过滤和排序功能,更重要的是,要添加用于更新数据源的代码。相关代码和其他一些程序可在指定网站的下载部分获取。
#### 2. 活动目录对象
为了读取 tblUser 表中 ADSID 和 ADName 列的值,需要一个对象。以下是示例代码:
```csharp
using System;
using System.Data.OleDb;
using System.Runtime.InteropServices;
namespace UserMan {
/// <summary>
/// Summary description for CActiveDirectory.
/// </summary>
public class CActiveDirectory {
private const string PR_STR_CONNECTION_STRING =
"Provider=ADsDSOObject;User Id=UserMan;Password=userman";
private string prstrADName;
private string prstrADSID;
private string prstrUserName;
public CActiveDirectory(string strUserName) {
prstrUserName = strUserName;
prOpenConnection();
}
~ CActiveDirectory() {
prCloseConnection();
}
// Database objects
private OleDbConnection prcnnAD;
private OleDbCommand prcmmAD;
private OleDbDataReader prdrdAD;
private void prOpenConnection() {
// Instantiate and open connection
prcnnAD = new OleDbConnection(PR_STR_CONNECTION_STRING);
prcnnAD.Open();
prRetrieveUserInformation();
}
private void prCloseConnection() {
// Close connection
prcnnAD.Close();
}
private void prRetrieveUserInformation() {
try {
// Instantiate command
prcmmAD = new OleDbCommand("SELECT objectSid, samAccountName "+
"FROM 'LDAP://userman.dk' WHERE objectCategory='person' "+
"AND objectClass='user' AND cn='" + prstrUserName + "'",
prcnnAD);
// Retrieve user info in data reader
prdrdAD = prcmmAD.ExecuteReader();
// Move to the first row
if (prdrdAD.Read()) {
// Save SAM account name (pre−Windows 2000)
prstrADName = prdrdAD["samAccountName"].ToString();
// Save human readable SID
prstrADSID = prConvertSID2SDDL((byte[]) prdrdAD["objectSid"]);
}
}
catch (Exception objE) {
throw new Exception("An error occurred trying to retrieve "+
"the user information from Active Directory.", objE);
}
}
public string ADName {
get {
return prstrADName;
}
}
public string ADSID {
get {
return prstrADSID;
}
}
}
}
```
这里使用了 OLE DB .NET 数据提供程序从活动目录 (AD) 检索用户信息。该提供程序在与活动目录一起使用时是只读的,但由于只需要检索信息,所以是可行的。CActiveDirectory 类的构造函数以用户的登录名作为唯一参数,用于在活动目录中搜索 samAccountName 和 SID。可以从任何客户端调用该类,例如以下代码:
```csharp
public void GetADUserInfo() {
probjActiveDirectory = new CActiveDirectory(prstrLoginName);
prstrADName = probjActiveDirectory.ADName;
prstrADSID = probjActiveDirectory.ADSID;
}
```
#### 3. 其他对象创建建议
由于尚未完成所有数据访问的封装,因此需
0
0
复制全文