读书人

100分请问你们后台管理是怎么做的

发布时间: 2012-01-01 23:10:55 作者: rapoo

100分请教,你们后台管理是如何做的,各位高手谈谈经验
问题:
1.每个数据表都对应各自的添加、修改、删除操作吗?
如:如果有100个表,就分别需要100个添加、修改、删除的操作界面和保存程序吗?
100(添加界面)+100(保存添加)+100(修改界面)+100(保存修改)+100(删除界面)+100(保存删除)=600个程序吗?
添加和修改的界面你们公用吗?添加和修改的保存程序你们公用吗?
如果你的程序中有100张表,你如何做后台管理

2.如果有的表的字段特别多,如有个表有50个字段,甚至100个,你如果做添加和修改的界面和保存添加和修改的程序?

3.如果对有个50个字段的表进行数据修改,但有时就修改其中的一两个数据,你怎么作修改界面和保存程序,需要把修改和没有修改的程序都保存一遍吗?

4.如果需要记录管理员的各种操作,如:添加、修改、删除,除了记录管理员对哪个表哪条记录做了操作以外,你们还记录哪些数据,需要做详细记录吗?

5.在添加的保存程序中如何最简便地记录管理员添加了哪条记录,即:获得新添加记录的id号,需要重新读取数据表吗?

请各位高手谈谈自己的经验吗?

[解决办法]
增\删\改.根据需要你可以做成通用的.

[解决办法]
1.每个数据表都对应各自的添加、修改、删除操作吗?
如:如果有100个表,就分别需要100个添加、修改、删除的操作界面和保存程序吗?
100(添加界面)+100(保存添加)+100(修改界面)+100(保存修改)+100(删除界面)+100(保存删除)=600个程序吗?
添加和修改的界面你们公用吗?添加和修改的保存程序你们公用吗?
如果你的程序中有100张表,你如何做后台管理
==================================
一般每个表对应至少5个存储过程:查询全部,根据关键字查询,增,删,改
添加和修改一般都可以做在一起,保存的程序在一起(判断一下即可),个人做的时候这些功能都是在一个界面的
而且,如果使用存储过程,可以实现1个界面同时更新N个表

2.如果有的表的字段特别多,如有个表有50个字段,甚至100个,你如果做添加和修改的界面和保存添加和修改的程序?
========================
每个字段都需要更新么?

3.如果对有个50个字段的表进行数据修改,但有时就修改其中的一两个数据,你怎么作修改界面和保存程序,需要把修改和没有修改的程序都保存一遍吗?
============
视图

4.如果需要记录管理员的各种操作,如:添加、修改、删除,除了记录管理员对哪个表哪条记录做了操作以外,你们还记录哪些数据,需要做详细记录吗?
==============
没有做这么详细

5.在添加的保存程序中如何最简便地记录管理员添加了哪条记录,即:获得新添加记录的id号,需要重新读取数据表吗?
===============
存储过程返回值
[解决办法]
1、理论上是这样。如果你想节省代码,可以将executenonquery写成一个函数,直接传参数,sql语句,来执行.如 delete,insert,update.还可以写一个reader的函数,传sql,参数,等返回datatable对象。
当然,如果你使用强类型的dataset,那么会比较方便。

2、你可以使用detailsview或formview来完成添、删、改
3、谈一下强类型的datarow,如果你的update方法可以接受一个强类型的datarow时,你可以不用更新每个字段值。

4、我不做这样的事情。

5、如果是自增列的话,我使用scope_identity
[解决办法]
学习中
[解决办法]
你自己写一个模板用来创建数据库(包括字段信息的管理) 对数据结构的管理
然后写一个公用的添加、修改、删除 对通用功能的管理
调用模板中的数据库的信息。
[解决办法]
增,删,改可以做成通用的
[解决办法]
2.如果有的表的字段特别多,如有个表有50个字段,甚至100个,你如果做添加和修改的界面和保存添加和修改的程序?
————————
代码生成器
[解决办法]
给你提供一个公用构架SQL类 增删改查

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.ComponentModel;
using System.Collections;

namespace DataSQLServer
{
public class CmdFactory
{
public CmdFactory()
{

}
/// <summary>
/// 绑定列表
/// </summary>
/// <param name= "tablename "> </param>
/// <returns> </returns>
public DataSet BuildSelectString(string tablename)
{
string strSQL = " ";
DataSet ds = new DataSet();
strSQL = "select * from [ "+tablename+ "] ";
ExecuteClass ec = new ExecuteClass();
ec.ExecuteSelectCmmond(strSQL, ds);
ds.Tables[0].TableName = tablename;
return ds;
}
/// <summary>


/// 构架SQL语句
/// </summary>
/// <param name= "ht "> </param>
/// <returns> </returns>
public bool BuildSQLString(Hashtable ht, string TableName, string operators)
{
//构架SQL语句
string strSQL = " ";
string strCol = " ";
DataSet ds = new DataSet();
//获取表结构
ExecuteClass execute = new ExecuteClass();
ds = execute.GetTableCol(TableName);

if (operators == "insert ")
{
for (int i = 1; i < ds.Tables[0].Columns.Count; i++)
{
if (i < ds.Tables[0].Columns.Count - 1)
strCol = strCol + ds.Tables[0].Columns[i].ColumnName.ToString() + ", ";
else
strCol = strCol + ds.Tables[0].Columns[i].ColumnName.ToString();
}
strSQL = "insert into [ " + TableName + "] ( " + strCol + ") values ( ";
for (int i = 0; i < ht.Count; i++)
{
if (i < ht.Count - 1)
strSQL = strSQL + " ' " + ht[i].ToString() + " ', ";
else
strSQL = strSQL + " ' " + ht[i].ToString() + " ') ";
}
}
else if(operators == "update ")
{
strSQL = "update [ " + TableName + "] set ";
int j = 1;
for (int i = 1; i < ds.Tables[0].Columns.Count; i++)
{
strSQL += ds.Tables[0].Columns[i].ColumnName.ToString() + "= ";
if (j < ht.Count - 1)
strSQL = strSQL + " ' " + ht[j].ToString() + " ', ";
else
strSQL = strSQL + " ' " + ht[j].ToString() + " ' ";
j++;
}
strSQL += "where " + ds.Tables[0].Columns[0].ColumnName.ToString() + "= " + ht[0].ToString();
}
else if (operators == "delete ")
{
strSQL = "delete from [ " + TableName + "] where " + ds.Tables[0].Columns[0].ColumnName.ToString() + "= " + ht[0].ToString();
}
return execute.ExecuteScalar(strSQL);
}

}
}

[解决办法]
公用执行SQL类
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace DataSQLServer
{
public class ExecuteClass
{
public ExecuteClass()
{

}
//public static string connectionString = LTP.Common.DEncrypt.DESEncrypt.Decrypt(LTP.Common.ConfigHelper.GetConfigString( "ConnectingString "));
//SqlConnection cn = new SqlConnection(connectionString);
SqlConnection cn = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings[ "ConnectingString "]);
/// <summary>
/// 执行更新删除插入数据库操作
/// </summary>
/// <param name= "strSql "> </param>


public bool ExecuteScalar(string strSql)
{
cn.Open();
//操作
SqlCommand cm = new SqlCommand();
cm.CommandText = strSql;
try
{
cm.Connection = cn;
cm.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
cn.Close();
}
return true;

}
/// <summary>
/// 执行查询数据库操作是否有记录 
/// </summary>
/// <param name= "strSql "> </param>
public bool ExecuteScalarRead(string strSql)
{
cn.Open();
SqlCommand cm = new SqlCommand();
cm.CommandText = strSql;
cm.Connection = cn;
try
{
SqlDataReader dr = cm.ExecuteReader();
if (dr.Read())
{
return true;
}
else
{
return false;
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
cm.Dispose();
cn.Close();
}

}
/// <summary>
/// 执行查询数据库操作返回多少条记录 
/// </summary>
/// <param name= "strSql "> </param>
public int ExecuteScalarScalarCount(string strSql)
{
cn.Open();
SqlCommand cm = new SqlCommand();
cm.CommandText = strSql;
cm.Connection = cn;
try
{
int count = (int)cm.ExecuteScalar();
return count;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
cm.Dispose();
cn.Close();
}

}
/// <summary>
/// 执行查询操作
/// </summary>
/// <param name= "strSql "> </param>
/// <param name= "ds "> 返回数据集 </param>
/// <returns> </returns>
public DataSet ExecuteSelectCmmond(string strSQL, DataSet ds)
{
cn.Open();
SqlCommand cm = new SqlCommand();
cm.CommandText = strSQL;
cm.Connection = cn;
SqlDataAdapter da = new SqlDataAdapter(cm);
try
{
da.Fill(ds);
return ds;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
cm.Dispose();
cn.Close();
}
}

/// <summary>
/// 查询表结构操作
/// </summary>
/// <param name= "strSql "> </param>
/// <param name= "ds "> 返回数据集 </param>
/// <returns> </returns>
public DataSet GetTableCol(string TableName)


{
cn.Open();
string strSql = "select * from [ " + TableName + "] where 1> 2 ";
SqlCommand cm = new SqlCommand();
cm.CommandText = strSql;
cm.Connection = cn;
DataSet ds = new DataSet();

SqlDataAdapter da = new SqlDataAdapter(cm);
try
{
da.Fill(ds);
return ds;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
cn.Close();
}
}
}
}

[解决办法]
参考下 不是有多少个操作就建立多少个表 多少程序

把都可以公用的都提取出来封装 以后就只需要调用


[解决办法]
1.每个数据表都对应各自的添加、修改、删除操作吗?
如:如果有100个表,就分别需要100个添加、修改、删除的操作界面和保存程序吗?
100(添加界面)+100(保存添加)+100(修改界面)+100(保存修改)+100(删除界面)+100(保存删除)=600个程序吗?
添加和修改的界面你们公用吗?添加和修改的保存程序你们公用吗?
如果你的程序中有100张表,你如何做后台管理
-----------------------------------------
一般如果你需要操作100个表,那就必须每个表都做页面啦,这是没办法的事,一般情况下不会有那么多表的。界面的话一般添加、修改界面可以做成同1个。删除功能直接放在显示列表中就可以删除。保存修改的界面整个网站只做1个就行,你保存成功了就跳转到这个界面,可以传些参数过来显示不同的信息给用户

2.如果有的表的字段特别多,如有个表有50个字段,甚至100个,你如果做添加和修改的界面和保存添加和修改的程序?
---------------------------------------------
我一般这样做,有50个字段需要更新,放50个textbox,textbox的命名用下面的规则:txt + 对应的字段名,比如更新name字段的就用txtName。
然后更新到数据库,或者从数据库读取数据的时候就循环页面上的所有textbox,然后根据有规则的ID找到对应的字段赋值就行了,不用写50行赋值代码。
(如果做灵活点,50个textbox也可以动态产生)

3.如果对有个50个字段的表进行数据修改,但有时就修改其中的一两个数据,你怎么作修改界面和保存程序,需要把修改和没有修改的程序都保存一遍吗?
------------------------------------
这个你怎么知道用户只需要修改1个数据了,一般很少有这样的情况吧,一般情况是50个字段,用户只可能修改其中的1,2字段,但这个我们不知道用户修改的是哪2个字段,所以还是需要全部更新。如果真的知道用户只会修改1,2个字段的话,可以考虑重新做个界面

4.如果需要记录管理员的各种操作,如:添加、修改、删除,除了记录管理员对哪个表哪条记录做了操作以外,你们还记录哪些数据,需要做详细记录吗?
-----------------------------------
这个主要是看你们的需求的,一般常需要记的还有是哪个管理员操作的,操作的时间等等。

5.在添加的保存程序中如何最简便地记录管理员添加了哪条记录,即:获得新添加记录的id号,需要重新读取数据表吗?
-----------------------------------------
使用存储过程进行添加,然后存储过程的返回新的ID就OK了
[解决办法]
学习哈

[解决办法]
mark
[解决办法]
可以做通用的。或是在页面上动态加载控件,写相应的通用代码。
[解决办法]
你可以做成可以通用的模块然后用代码生成器生成嘛,这样也很快啊。
[解决办法]
N年前我也有一样的疑惑~
[解决办法]
对于常用的规律性很强的代码,就用代码生成器把。
[解决办法]
学习
[解决办法]
学习,up
[解决办法]
50个字段,100个字段。。。。。。。数据库够狠了。。。。。。,用的SQL还是甲骨文还是DB2。。。。。。?
[解决办法]
问题:
1.每个数据表都对应各自的添加、修改、删除操作吗?
如:如果有100个表,就分别需要100个添加、修改、删除的操作界面和保存程序吗?
100(添加界面)+100(保存添加)+100(修改界面)+100(保存修改)+100(删除界面)+100(保存删除)=600个程序吗?
添加和修改的界面你们公用吗?添加和修改的保存程序你们公用吗?
如果你的程序中有100张表,你如何做后台管理

2.如果有的表的字段特别多,如有个表有50个字段,甚至100个,你如果做添加和修改的界面和保存添加和修改的程序?

3.如果对有个50个字段的表进行数据修改,但有时就修改其中的一两个数据,你怎么作修改界面和保存程序,需要把修改和没有修改的程序都保存一遍吗?



4.如果需要记录管理员的各种操作,如:添加、修改、删除,除了记录管理员对哪个表哪条记录做了操作以外,你们还记录哪些数据,需要做详细记录吗?

5.在添加的保存程序中如何最简便地记录管理员添加了哪条记录,即:获得新添加记录的id号,需要重新读取数据表吗?


========================================

总的来说.你这个维护是对数据库的维护,不是对程序后台的维护.
还不于直接在后台写一个SQL搞一个小的查询分析器...哈输.

程序后台.你只要对权限,数据维护,不必要做到全部的数据表都进行维护!

读书人网 >asp.net

热点推荐