日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CYQ.Data 轻量数据层之路 应用示例一 留言版(四)

發布時間:2025/3/17 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CYQ.Data 轻量数据层之路 应用示例一 留言版(四) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

繼上篇:CYQ.Data 輕量數據層之路 繼續狂熱升級(三)之后,本篇要進入應用示例介紹使用了:

?

為了使一篇文章就能介紹完整個示例,我選用了簡單的:登陸+注冊+留言版本功能,來一步一步介紹如何使用的:

當前環境是:VS2005+SQL2005

?

從數據庫說起吧,我們創建一個新的數據庫,起名叫:Message

接著新建兩個表:Users+Message,上圖:

為避免本篇節過長,本示例只選用最關鍵的字段了,大伙可以根據上面的圖自己創建數據庫與表。

接著我們新建網站來示例[這里沒選擇新建應用程序,怕個別人沒裝sp1補丁,示例打不開!]

接下來一步一腳印了:

1:新建網站項目,如起名叫:Cyq.Data.MessageDemoProject

新建完后,F5運行,產生配置文件web.config先,接著在配置文件里添加數據庫鏈接:

<connectionStrings>
<add?name="Conn"?connectionString="Server=.;database=Message;uid=sa;pwd=123456"/>
</connectionStrings>

?

2:添加引用:CYQ.Data.dll

瀏覽定位選擇CYQ.Data.dll

?

3:生成分頁查詢存儲過程與枚舉:我們新建頁面:WriteOut.aspx,用于生成輸出:

A:生成分頁存儲過程

protected?void?Page_Load(object?sender,?EventArgs?e)
{
????????
//輸出分頁存儲過程
????????Response.Write(CYQ.Data.SQL.OutPutData.GetSelectBaseOutPutToHtmlForSql2005());
}

?

寫好后,右鍵瀏覽該頁面,把輸出的信息“Ctrl+A -> Ctrl+C"全選->復制

我們把生成的分頁存儲過程到數據庫里執行一下:

?

B:生成表枚舉

我們還是在當前頁面的里敲代碼:

protected?void?Page_Load(object?sender,?EventArgs?e)
????{
????????
//輸出存儲過程
????????
//Response.Write(CYQ.Data.SQL.OutPutData.GetSelectBaseOutPutToHtmlForSql2005());

????????
//輸出表視圖枚舉:
????????CYQ.Data.SQL.OutPutData?data?=?new?CYQ.Data.SQL.OutPutData();
????????Response.Write(data.OutPutAllTableEnum(CYQ.Data.SQL.OutPutData.TableType.U,?CYQ.Data.SQL.OutPutData.FiledDescriptionType.Sql2005));
????}

?

我們注釋掉了生成存儲過程的,添加了生成表枚舉,說明參數:

TableType.U:指生成表枚舉
TableType.V:指生成視圖枚舉
DiledDescriptionType.NoDescription:不生成注釋
DiledDescriptionType.Sql2005:生成注釋--對應Sql?2005
DiledDescriptionType.Sql2000:生成注釋--對應Sql?2000

備注:注釋信息取自數據庫字段的說明,如果數據庫字段說明沒寫東西,生成的就是No?Descrpiotn

?

?

接著,我們新添加一個類:TableNames,來存放生成的枚舉信息:生成后的類默認會在App_Code文件夾下:

?

4:開始項目:我們新建兩個頁面:登陸(Login.aspx);注冊(Reg.aspx);留言界面[默認已有](Default.aspx)

A:注冊用戶:界面如下圖,Html代碼大伙自己布局了:

如圖:只有用戶名和密碼:雙擊進“提交注冊”按鈕事件里敲入以下代碼:

protected?void?btnReg_Click(object?sender,?EventArgs?e)
????{
????????
if?(txtPassword.Text?!=?txtPasswordAgain.Text)
????????{
????????????lbMsg.Text?
=?"兩次密碼不一致!";
????????????
return;
????????}
????????MAction?action?=?new?MAction(TableNames.Users);
????????
if?(action.GetCount(string.Format("UserName='{0}'",?txtUserName.Text.Trim()))?>?0)
????????{
????????????lbMsg.Text?
=?"用戶已存在!";
????????????action.Close();
????????}
????????
else
????????{
????????????action.GetFrom(txtUserName);
????????????action.GetFrom(txtPassword);
????????????
if?(action.Insert())
????????????{
????????????????Session[
"ID"]?=?action.Get<int>(Users.ID);
????????????????action.Close();
????????????????Response.Redirect(
"Default.aspx");
????????????}
????????}
????}

?

代碼不多,大伙看的懂我就不解釋了,注冊成功后轉向Default.aspx頁面!

?

B:登陸界面:截圖如下,界面加多了個鏈接到注冊頁面去了:

同樣雙擊“登陸”進入后臺代碼如下:

protected?void?btnLogin_Click(object?sender,?EventArgs?e)
????{
????????MAction?action?
=?new?MAction(TableNames.Users);
????????
if(action.Fill(string.Format("UserName='{0}'?and?Password='{1}'",?txtUserName.Text.Trim(),?txtPassword.Text.Trim())))
????????{
????????????Session[
"ID"]?=?action.Get<int>(Users.ID);
????????????action.Close();
????????????Response.Redirect(
"Default.aspx");
????????}
????????
else
????????{
????????????lbMsg.Text?
=?"用戶密碼錯誤!";
????????????action.Close();
????????}
????}

?

代碼同樣很簡潔,登陸后記錄下Session,轉向Default.aspx頁面:

?

C:留言頁面:我們來看一下界面:[這里先清除下數據庫的數據,重新注冊添加一點數據]

我先清除以前的舊數據,數據庫SQL執行一下語句:

TRUNCATE?TABLE?[Message]
TRUNCATE?TABLE?Users

?

好,重新注冊下,留下言,上圖:

如上圖所示,整個頁面分為:

1:最左上角的歡迎
2:三個列表[注冊用戶/我的留言/所有留言],分別使用GridView/DataList/Repeater綁定
3:右下角的提交留言

?

我們一個一個看代碼:

1:最左上角的歡迎:判斷沒登陸后就直接轉向登陸,如果登陸,直接用Session["ID"]填充數據

protected?void?LoadMyInfo()
{
????????
if?(Session["ID"]?==?null)
????????{
????????????Response.Redirect(
"Login.aspx");
????????}
????????
else
????????{
????????????MAction?action?
=?new?MAction(TableNames.Users);
????????????
if?(action.Fill(Session["ID"]))
????????????{
????????????????action.SetTo(labUserName);
????????????}
????????????
else
????????????{
????????????????labUserName.Text?
=?"讀取數據失敗!";
????????????}
????????????action.Close();
????????}
}

?

?

2:接下來三個列表的綁定

protected?void?LoadUserListInfo()//GridView?綁定用戶注冊信息
????{
????????MAction?action?
=?new?MAction(TableNames.Users);
????????gvUsers.DataSource?
=?action.Select();
????????gvUsers.DataBind();
????????action.Close();
????}
????
protected?void?LoadMyMessageList()//DataList?綁定我的留言
????{
????????
int?count;
????????MAction?action?
=?new?MAction(TableNames.Message);
????????dalMyMessage.DataSource?
=?action.Select(1,?10,?string.Format("UserID={0}",?Session["ID"]),?out?count);
????????dalMyMessage.DataBind();
????????action.Close();
????}
????
protected?void?LoadAllMessageList()//Repeater?綁定所有用戶留言
????{
????????MAction?action?
=?new?MAction(CustomerSQL.Message);
????????rptMessage.DataSource?
=?action.Select();
????????rptMessage.DataBind();
????????action.Close();
????}

?

最后一個綁定所有用戶留言時,涉及兩個表關聯,所以傳入的表名是CustomerSQL.Message,這個是怎么來的?

我App_Code文件夾下我新建一個類:CustomerSQL,來統一管理SQL:

public?class?CustomerSQL
{
????
public?const?string?Message?=?"(select?m.*,u.UserName?from?Message?m?left?join?Users?u?on?m.UserID=u.ID)?v";
}

?

最后,我們需要在Page_Load方法里加載上面的幾個方法:

protected?void?Page_Load(object?sender,?EventArgs?e)
{
????????LoadMyInfo();
????????LoadUserListInfo();
????????LoadMyMessageList();
????????LoadAllMessageList();
}

?

?

3:提交留言:提交完后,自我刷新一下界面。

protected?void?btnSubmit_Click(object?sender,?EventArgs?e)
{
????????MAction?action?
=?new?MAction(TableNames.Message);
????????action.GetFrom(txtBody);
????????action.Set(Message.UserID,?Session[
"ID"]);
????????action.Insert();
????????action.Close();
????????Response.Redirect(Request.RawUrl);
}

?

?

4:還有個退出呢

protected?void?btnLogout_Click(object?sender,?EventArgs?e)
{
????????Session[
"ID"]?=?null;
????????Response.Redirect(
"Login.aspx");
}

?

?

至此,一個注冊+登陸+留言功能的小項目,就輕松寫完了,拿上面的代碼和你以前寫的代碼比較下,感覺哪個簡潔方便實用呢?

如果用你目前使用的方法寫一個一樣的,需要花費的時間和精力又是多少?歡迎拍磚留言!

?

OK,本示例應用到此結束了,最后提供Demo下載[內附數據庫腳本]:點擊下載

版權聲明:本文原創發表于博客園,作者為路過秋天,原文鏈接:

http://www.cnblogs.com/cyq1162/archive/2010/08/18/1801518.html

總結

以上是生活随笔為你收集整理的CYQ.Data 轻量数据层之路 应用示例一 留言版(四)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。