手机
当前位置:查字典教程网 >编程开发 >asp.net教程 >asp.net小孔子cms中的数据添加修改
asp.net小孔子cms中的数据添加修改
摘要:题外话:我为什么研究小孔子的cms,从我自己写一个cms我就开始研究起别人的cms,早期我是研究netcms,但这系统过于庞大,看上去十分的...

题外话:我为什么研究小孔子的cms,从我自己写一个cms我就开始研究起别人的cms,早期我是研究netcms,但这系统过于庞大,看上去十分的累,也没那个精力,于是打算从一套比较小的开始研究,于是小孔子cms就进入了我的研究范围。没过多久我就放下我手中的cms,决定研究清楚有了更多经验再继续写完我没有完成的cms。

最近都在看小孔子cms的代码,其添加与修改数据十分方便,做下笔记,代码主要提取自小孔子cms,去掉了不用的函数并把相关代码写到一个文件中:

asp.net小孔子cms中的数据添加修改1

结合上面的图片,当我们要往数据库中添加数据时,代码如下:

dataHandledoh=newdataHandle();

doh.AddBind(tbxWebName,"link_webname",true);

doh.AddBind(tbxWebUrl,"link_weburl",true);

doh.AddBind(tbxLogoUrl,"link_logourl",true);

doh.AddBind(tbxOrderNum,"link_ordernum",false);

doh.AddBind(ddlStyle,"link_style",false);

doh.AddBind(rblAudit,"link_audit",false);

doh.Add();

intresult=Convert.ToInt32(doh.InsertData("db_link"));

Response.Write(result.ToString());

绑定数据指的是从数据库中读取一条记录,并自动绑定到表单的控件中,代码如下(假设读取的id=8):

复制代码 代码如下:

dataHandledoh=newdataHandle();

doh.AddBind(tbxWebName,"link_webname",true);

doh.AddBind(tbxWebUrl,"link_weburl",true);

doh.AddBind(tbxLogoUrl,"link_logourl",true);

doh.AddBind(tbxOrderNum,"link_ordernum",false);

doh.AddBind(ddlStyle,"link_style",false);

doh.AddBind(rblAudit,"link_audit",false);

doh.ConditionExpress="id=8";

doh.tableName="db_link";

doh.BindWhenUp();

修改数据与添加数据差不多:

复制代码 代码如下:

dataHandledoh=newdataHandle();

doh.ConditionExpress="id=8";

doh.AddBind(tbxWebName,"link_webname",true);

doh.AddBind(tbxWebUrl,"link_weburl",true);

doh.AddBind(tbxLogoUrl,"link_logourl",true);

doh.AddBind(tbxOrderNum,"link_ordernum",false);

doh.AddBind(ddlStyle,"link_style",false);

doh.AddBind(rblAudit,"link_audit",false);

doh.Add();

intresult=Convert.ToInt32(doh.UpData("db_link"));

Response.Write(result);

而aspx文件详细代码:XML/HTML复制代码

网站:

<asp:TextBoxID="tbxWebName"runat="server"></asp:TextBox>

<br/>

<br/>

域名:<asp:TextBoxID="tbxWebUrl"runat="server"></asp:TextBox><br/>

<br/>

logo地址:<asp:TextBoxID="tbxLogoUrl"runat="server"Width="198px"></asp:TextBox><br/>

<br/>

排序:<asp:TextBoxID="tbxOrderNum"runat="server"></asp:TextBox><br/>

<br/>

是否审核:<asp:RadioButtonListID="rblAudit"runat="server"RepeatDirection="Horizontal">

<asp:ListItemValue="1">是</asp:ListItem>

<asp:ListItemSelected="True"Value="0">否</asp:ListItem>

</asp:RadioButtonList>

<br/>

<br/>

显示方式:

<br/>

<asp:DropDownListID="ddlStyle"runat="server">

<asp:ListItemValue="1">文字</asp:ListItem>

<asp:ListItemValue="2">图片</asp:ListItem>

<asp:ListItemValue="3">待定</asp:ListItem>

</asp:DropDownList><br/>

<br/>

<asp:ButtonID="btnOk"runat="server"Text="提交"OnClick="btnOk_Click"/><asp:Button

ID="btnEnter"runat="server"OnClick="btnEnter_Click"Text="绑定"/>

<asp:ButtonID="btnUp"runat="server"OnClick="btnUp_Click"Text="更改"/><br/>

<br/>

<asp:LabelID="lblResult"runat="server"Text="结果"></asp:Label></div>

我对代码做了很多注释,大家有兴趣可以看看:

复制代码 代码如下:

usingSystem;

usingSystem.Data;

usingSystem.Configuration;

usingSystem.Collections;

usingSystem.Web;

usingSystem.Web.Security;

usingSystem.Web.UI;

usingSystem.Web.UI.WebControls;

usingSystem.Web.UI.WebControls.WebParts;

usingSystem.Web.UI.HtmlControls;

usingSystem.Data.OleDb;

usingSystem.Text;

namespacemycms.DataOper.Data

{

///<summary>

///dataHandle的摘要说明

///</summary>

publicclassdataHandle

{

publicdataHandle()

{

this.conn=newOleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=|DataDirectory|mycms.mdb");

this.conn.Open();

this.cmd=conn.CreateCommand();

this.da=newOleDbDataAdapter();

}

#regionwebform

//这个用来存放包括控件类型,字段,是否是字符串

publicArrayListalBinderItems=newArrayList(8);

//这个只用来存放字段,值

publicArrayListalFieldItems=newArrayList(8);

///<summary>

///建立文本框到数据字段的绑定

///</summary>

publicvoidAddBind(TextBoxtbx,stringfield,boolisStringType)

{

alBinderItems.Add(newBinderItem(tbx,field,isStringType));

}

///<summary>

///下拉列表

///</summary>

publicvoidAddBind(DropDownListdd,stringfield,boolisStringType)

{

alBinderItems.Add(newBinderItem(dd,field,isStringType));

}

publicvoidAddBind(RadioButtonListrb,stringfield,boolisStringType)

{

alBinderItems.Add(newBinderItem(rb,field,isStringType));

}

///<summary>

///多选框

///</summary>

publicvoidAddBind(CheckBoxListcb,stringfield,boolisStringType)

{

alBinderItems.Add(newBinderItem(cb,field,isStringType));

}

///<summary>

///需要修改数据时取出数据库中的记录填充到表单中

///</summary>

publicvoidBindWhenUp()

{

if(alBinderItems.Count==0)

{

return;

}

BinderItembi;

StringBuildersbSql=newStringBuilder("select");

for(inti=0;i<alBinderItems.Count;i++)

{

bi=(BinderItem)alBinderItems[i];

//防止出现变量名

sbSql.Append("["+bi.field+"]");

sbSql.Append(",");

}

sbSql.Remove(sbSql.Length-1,1);

sbSql.Append("from");

sbSql.Append(this.tableName);

sbSql.Append("where1=1and");

sbSql.Append(this.ConditionExpress);

this.sqlCmd=sbSql.ToString();

dt=this.GetDataTable();

//如果没有记录则抛出异常

if(dt.Rows.Count==0)

{

thrownewArgumentException("记录不存在");

}

DataRowdr=dt.Rows[0];

for(intj=0;j<alBinderItems.Count;j++)

{

bi=(BinderItem)alBinderItems[j];

bi.SetValue(dr[bi.field].ToString());

}

}

///<summary>

///该方法实现从alBinderItems到alFieldItems的转换,目的:alFieldItems可以转为DbKeyItem,操作数据库时需要用到DbKeyItem

///</summary>

publicvoidAdd()

{

if(this.alBinderItems.Count==0)

{

return;

}

BinderItembi=null;

for(inti=0;i<alBinderItems.Count;i++)

{

bi=((BinderItem)alBinderItems[i]);

AddFieldItem(bi.field,bi.GetValue());

}

}

///<summary>

///添加一个字段/值对到数组中

///</summary>

publicvoidAddFieldItem(string_fieldName,object_fieldValue)

{

_fieldName="["+_fieldName+"]";

//遍历看是否已经存在字段名

for(inti=0;i<this.alFieldItems.Count;i++)

{

if(((DbKeyItem)this.alFieldItems[i]).fieldName==_fieldName)

{

thrownewArgumentException("字段已经存在");

}

}

this.alFieldItems.Add(newDbKeyItem(_fieldName,_fieldValue));

}

#endregion

#region操作数据

#region这里声明有关数据操作的必要参数

//当前所使用的数据库连接

protectedOleDbConnectionconn;

//当前所使用的命令对象

protectedOleDbCommandcmd=newOleDbCommand();

//当前所使用的数据库适配器

protectedOleDbDataAdapterda;

//当前的SQL语句

publicstringsqlCmd=string.Empty;

//当前操作所涉及的数据库表名

publicstringtableName=string.Empty;

//SQL条件

publicstringConditionExpress;

//用于存放从数据库中取得的数据记录

protectedDataTabledt;

#endregion

///<summary>

///根据当前alFieldItem数组中存储的字段/值向指定表中添加一条记录。返回自动增长id

///</summary>

///<paramname="_talbeName"></param>

///<returns></returns>

publicintInsertData(string_talbeName)

{

this.tableName=_talbeName;

this.sqlCmd="insertinto"+this.tableName+"(";

stringtemValue="values(";

for(inti=0;i<this.alFieldItems.Count;i++)

{

this.sqlCmd+=((DbKeyItem)alFieldItems[i]).fieldName+",";

temValue+="@para"+i.ToString()+",";

}

//分别去掉,

this.sqlCmd=Input.CutComma(this.sqlCmd)+")"+Input.CutComma(temValue)+")";

//声明执行语句

this.cmd.CommandText=this.sqlCmd;

GenParameters();

cmd.ExecuteNonQuery();

intautoId=0;

try

{

cmd.CommandText="select@@identityasid";

autoId=Convert.ToInt32(cmd.ExecuteScalar());

}

catch(Exceptionex)

{

thrownewException(ex.Message);

}

returnautoId;

}

///<summary>

///根据当前alFieldItem数组中存储的字段/值和条件表达式所指定的条件来更新数据库中的记录,返回受影响的行数

///</summary>

///<paramname="_tableName">更新的数据表名称</param>

///<returns>返回此次操作所影响的数据行数</returns>

publicintUpData(string_tableName)

{

this.tableName=_tableName;

this.sqlCmd="update"+this.tableName+"set";

for(inti=0;i<this.alFieldItems.Count;i++)

{

this.sqlCmd+=((DbKeyItem)alFieldItems[i]).fieldName;

this.sqlCmd+="=";

this.sqlCmd+="@para";

this.sqlCmd+=i.ToString();

this.sqlCmd+=",";

}

this.sqlCmd=Input.CutComma(this.sqlCmd);

if(this.ConditionExpress!=string.Empty)

{

this.sqlCmd=this.sqlCmd+"where"+this.ConditionExpress;

}

this.cmd.CommandText=this.sqlCmd;

this.GenParameters();

inteffectedLines=this.cmd.ExecuteNonQuery();

returneffectedLines;

}

///返回查询结果DataTable

publicDataTableGetDataTable()

{

DataSetds=this.GetDataSet();

returnds.Tables[0];

}

///<summary>

///根据当前指定的SqlCmd获取DataSet,如果条件表达式不为空则会被清空,

///所以条件表达式必须包含在SqlCmd中

///</summary>

publicDataSetGetDataSet()

{

this.ConditionExpress=string.Empty;

this.cmd.CommandText=this.sqlCmd;

this.GenParameters();

DataSetds=newDataSet();

this.da.SelectCommand=this.cmd;

this.da.Fill(ds);

returnds;

}

///<summary>

///产生OleDbCommand对象所需的参数

///</summary>

///<returns></returns>

protectedvoidGenParameters()

{

if(this.alFieldItems.Count>0)

{

for(inti=0;i<this.alFieldItems.Count;i++)

{

cmd.Parameters.AddWithValue("@para"+i.ToString(),((DbKeyItem)alFieldItems[i]).fieldValue.ToString());

}

}

}

#endregion

}

publicclassBinderItem

{

//每个绑定控件都以object的形式被存储的

publicobjectobj;

//绑定到数据库的字段名称

publicstringfield;

//是否是字符串类型

publicboolisStringType;

///<summary>

///构造函数

///</summary>

///<paramname="_o">需要绑定的控件对象</param>

///<paramname="_field">绑定到的数据表字段名称</param>

///<paramname="_isStringType">是否是字符串类型</param>

publicBinderItem(object_obj,string_field,bool_isStringType)

{

this.obj=_obj;

this.field=_field;

this.isStringType=_isStringType;

}

///<summary>

///根据控件类型获得控件的值

///</summary>

///<returns></returns>

publicstringGetValue()

{

//字符串类型

if(objisString)

{

return(string)obj;

}

//下拉框

if(objisDropDownList)

{

DropDownListdd=(DropDownList)obj;

returndd.SelectedValue;

}

//多选框

if(objisCheckBoxList)

{

strings=string.Empty;

CheckBoxListcb=(CheckBoxList)obj;

for(inti=0;i<cb.Items.Count;i++)

{

if(cb.Items[i].Selected)

{

s+=cb.Items[i].Value+",";

}

}

returns;

}

//文本框

if(objisTextBox)

{

TextBoxtbx=(TextBox)obj;

returntbx.Text.Trim();

}

//Label

if(objisLabel)

{

Labellbl=(Label)obj;

returnlbl.Text;

}

//单选组

if(objisRadioButtonList)

{

RadioButtonListrb=(RadioButtonList)obj;

returnrb.SelectedValue;

}

returnstring.Empty;

}

///<summary>

///根据控件类型设定控件的值

///</summary>

///<paramname="_value">要设定的值</param>

publicvoidSetValue(string_value)

{

//字符串类型

if(objisstring)

{

strings=(string)obj;

s=_value;

return;

}

//文本框

if(objisTextBox)

{

TextBoxtbx=(TextBox)obj;

tbx.Text=_value;

return;

}

//单选按钮

if(objisRadioButtonList)

{

RadioButtonListrb=(RadioButtonList)obj;

rb.SelectedValue=_value;

return;

}

//下拉列表

if(objisDropDownList)

{

DropDownListdd=(DropDownList)obj;

dd.SelectedValue=_value;

return;

}

}

}

///<summary>

///数据表中的字段属性:字段名,字段值

///</summary>

publicclassDbKeyItem

{

///<summary>

///字段名称

///</summary>

publicstringfieldName;

///<summary>

///字段值

///</summary>

publicstringfieldValue;

publicDbKeyItem(string_fileName,object_fieldValue)

{

this.fieldName=_fileName;

this.fieldValue=_fieldValue.ToString();

}

}

}

return;

}

//单选按钮

if(objisRadioButtonList)

{

RadioButtonListrb=(RadioButtonList)obj;

rb.SelectedValue=_value;

return;

}

//下拉列表

if(objisDropDownList)

{

DropDownListdd=(DropDownList)obj;

dd.SelectedValue=_value;

return;

}

}

}

///<summary>

///数据表中的字段属性:字段名,字段值

///</summary>

publicclassDbKeyItem

{

///<summary>

///字段名称

///</summary>

publicstringfieldName;

///<summary>

///字段值

///</summary>

publicstringfieldValue;

publicDbKeyItem(string_fileName,object_fieldValue)

{

this.fieldName=_fileName;

this.fieldValue=_fieldValue.ToString();

}

}

}

【asp.net小孔子cms中的数据添加修改】相关文章:

Asp.net配合easyui实现返回json数据实例

asp.net(c#)利用构造器链的代码

asp.net Hashtable 遍历写法

asp.net 字符串加密解密技术

asp.net字符串分割函数使用方法分享

asp.net下经典数据库记录分页代码

asp.net读取excel中的数据并绑定在gridview

asp.net Xml绑定到数据控件的具体实现

在asp.net中实现datagrid checkbox 全选的方法

asp.net 多字段模糊查询代码

精品推荐
分类导航