提取aspnet_Profile中自定義的使用者屬性(C#實現)
特殊需求
一個非常特別需求,需要提取aspnet_Profile中自定義的使用者屬性。這個特殊的需求是這樣的:
提取使用者的屬性列表,我的機器只能訪問開發庫,沒法訪問生產庫。DBA也比較忙,於是乎就把原始資料拿了過來,用程式進行分解。
Profile物件儲存表(aspnet_Profile)
欄位名 |
型別 |
屬性 |
說明 |
UserId |
uniqueidentifier |
FK: aspnet_Users.UserId |
使用者ID |
PropertyNames |
ntext |
屬性名稱 | |
PropertyValuesString |
ntext |
字串值 | |
PropertyValuesBinary |
image |
二進位制值 |
propertynames |
NID:S:0:3:Company:S:3:3:PID:S:6:3:TrueName:S:9:2: |
propertyvaluesstring |
338com549李某 |
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--> ///
/// 獲取 aspnet_Profile中的屬性值
///
///
private DataTable GetProfileProperty()
{
string sql = @"SELECT
[username]
, [rolename]
, [propertynames]
, [propertyvaluesstring]
FROM [VUserProfile]";
DataSet ds = DBUtility.getDataSet(sql);
//NID,Company,PID,TrueName是自定義的使用者屬性
DataTable dt = new DataTable();
DataColumn UserName = new DataColumn("UserName", typeof(string));
DataColumn RoleName = new DataColumn("RoleName", typeof(string));
DataColumn NID = new DataColumn("NID", typeof(string));
DataColumn Company = new DataColumn("Company", typeof(string));
DataColumn PID = new DataColumn("PID", typeof(string));
DataColumn TrueName = new DataColumn("TrueName", typeof(string));
dt.Columns.Add(UserName);
dt.Columns.Add(RoleName);
dt.Columns.Add(NID);
dt.Columns.Add(Company);
dt.Columns.Add(PID);
dt.Columns.Add(TrueName);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
DataRow row = ds.Tables[0].Rows[i];
string username = row["username"].ToString();
string rolename = row["rolename"].ToString();
string propertynames = row["propertynames"].ToString().Replace(":S:", "*");
string propertyvaluesstring = row["propertyvaluesstring"].ToString();
DataRow dtrow = dt.NewRow();
dtrow["UserName"] = username;
dtrow["RoleName"] = rolename;
string[] p1 = propertynames.Split('*');
for (int j = 0; j < p1.Length - 1; j++)
{
string[] tmp = p1[j].Split(':');
string[] tmp2 = p1[j + 1].Split(':');
string propertyname = tmp[tmp.Length - 1];
string propertyvalue = propertyvaluesstring.Substring(int.Parse(tmp2[0]), int.Parse(tmp2[1]));
dtrow[propertyname] = propertyvalue;
}
dt.Rows.Add(dtrow);
}
return dt;
}
/// 獲取 aspnet_Profile中的屬性值
///
///
private DataTable GetProfileProperty()
{
string sql = @"SELECT
[username]
, [rolename]
, [propertynames]
, [propertyvaluesstring]
FROM [VUserProfile]";
DataSet ds = DBUtility.getDataSet(sql);
//NID,Company,PID,TrueName是自定義的使用者屬性
DataTable dt = new DataTable();
DataColumn UserName = new DataColumn("UserName", typeof(string));
DataColumn RoleName = new DataColumn("RoleName", typeof(string));
DataColumn NID = new DataColumn("NID", typeof(string));
DataColumn Company = new DataColumn("Company", typeof(string));
DataColumn PID = new DataColumn("PID", typeof(string));
DataColumn TrueName = new DataColumn("TrueName", typeof(string));
dt.Columns.Add(UserName);
dt.Columns.Add(RoleName);
dt.Columns.Add(NID);
dt.Columns.Add(Company);
dt.Columns.Add(PID);
dt.Columns.Add(TrueName);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
DataRow row = ds.Tables[0].Rows[i];
string username = row["username"].ToString();
string rolename = row["rolename"].ToString();
string propertynames = row["propertynames"].ToString().Replace(":S:", "*");
string propertyvaluesstring = row["propertyvaluesstring"].ToString();
DataRow dtrow = dt.NewRow();
dtrow["UserName"] = username;
dtrow["RoleName"] = rolename;
string[] p1 = propertynames.Split('*');
for (int j = 0; j < p1.Length - 1; j++)
{
string[] tmp = p1[j].Split(':');
string[] tmp2 = p1[j + 1].Split(':');
string propertyname = tmp[tmp.Length - 1];
string propertyvalue = propertyvaluesstring.Substring(int.Parse(tmp2[0]), int.Parse(tmp2[1]));
dtrow[propertyname] = propertyvalue;
}
dt.Rows.Add(dtrow);
}
return dt;
}
效果
UserName | RoleName | NID | CompanyID | PID | TrueName |
---|---|---|---|---|---|
leex |
客服 | 800 |
c1 |
201 | 李 X |
leey |
財務 |
801 | c2 |
202 | 李 Y |
leez |
代理商 |
801 | c3 |
203 | 李 Z |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-663380/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 自定義View:自定義屬性(自定義按鈕實現)View
- C# 自定義屬性在propertyGrid控制元件中顯示C#控制元件
- [譯] 為函式自定義屬性的八種實現方法函式
- android中自定義屬性重複定義Android
- CSS 自定義屬性指北CSS
- data-* 自定義屬性
- Android自定義屬性Android
- 【朝花夕拾】Android自定義View篇之(四)自定義View的三種實現方式及自定義屬性詳解AndroidView
- CSS變數(自定義屬性)實踐指南CSS變數
- Android自定義控制元件——自定義屬性Android控制元件
- 初識css自定義屬性CSS
- CSS 自定義屬性(變數)CSS變數
- 屬性動畫:如何自定義View動畫View
- easyui tree自定義屬性用法UI
- CSS自定義屬性Expression(轉)CSSExpress
- 4. 自定義控制元件(4) --- 自定義屬性控制元件
- Android自定義控制元件之自定義屬性Android控制元件
- 帶你深入理解Android中的自定義屬性!!!Android
- Android 深入理解Android中的自定義屬性Android
- 【譯】CSS 自定義屬性的策略指南CSS
- C#中屬性的解析C#
- Android 自定義View:深入理解自定義屬性(七)AndroidView
- 原生 JavaScript 如何實現通過自定義屬性定位/篩選節點JavaScript
- ubuntu下OpenLDAP新增自定義屬性UbuntuLDA
- 使用 CSS 自定義屬性(變數)CSS變數
- Android自定義View 屬性新增AndroidView
- 給自定義View新增xml屬性ViewXML
- objc系列譯文(12.2):Layer中自定義屬性的動畫OBJ動畫
- CSS自定義屬性+CSS Grid網格實現超級的佈局能力CSS
- HTML5的data-*自定義屬性HTML
- .net自定義控制元件下拉的屬性控制元件
- Android自定義組合控制元件之自定義屬性Android控制元件
- Android 自定義View:屬性動畫(六)AndroidView動畫
- css自定義屬性和聚光燈效果CSS
- spring 自定義屬性解析器Spring
- android 自定義控制元件 自定義屬性詳細介紹Android控制元件
- C中atoi和strcpy的自定義實現
- 使用CSS自定義屬性構建骨架屏CSS