自己写的一个通过对象更新数据库的例子

自己很菜,只是想多多交流,希望得到大家的支持

另外想咨询下大家,大家用的绘制UML图的软件除了rose,一般还有什么?

故事是这样的

做ext 的时候,我们老师说json 在ext 最通用,

于是乎,我们后台组和前台组的传递就靠 json

本来是准备用dataset 放数据的

但是有个同学下了个json.net 这个插件 

可以实现 对象转json 的功能

我自己拿dataset 实验,发现不行,

之后我们又搜了个dataset 转json 的东西,

实现了操作,

事后,我们就在想,为什么json.net 本身不提供dataset 与json 互转呢?

这引起了我们的一些想法,是封装的原因? 还是 通过属性的访问器来验证数据?

我们不知道。。。



后来看了下《你必须知道的.NEt》,心里乱了   就做了一个用类更新数据库的东西,准备用json.net 转成对象后做数据库操作。

比如说数据是关于stu 的,我就写个class Stu,

里面的属性包括了数据库本身的所有的字段。。。。(貌似有点画蛇添足?)

代码是这样的
/*---------------------------------------------
 * 这是为ext和aspx.cs 打交道使用的类,
 * 因为是初学者,所以没什么水平,
 * 希望大家多多指导,
 * 另外非常想知道的一个事情
 * ---------------------------------------------
 * 请问大家做UML图都用什么软件做的?
 * 
 * 
 * 读过《你必须知道的.net》的朋友能看懂对多态的讲解不?
 * ---------------------------------------------
 *
 *
 
*/


using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Collections;
using System.Reflection;
using System.Text;

/// <summary>
/// DBcontrol 的摘要说明
/// </summary>



    
//提供数据操作的相应接口
    public interface IDbAction
    
{
        
void update(Queue queue,string tableName);
        
void insert(Queue queue,string tableName);
        
void delete(Queue queue,string tableName);
    }


    
/// <summary>
    
/// 将数据内容变为sql语句并执行的类
    
/// </summary>

    public class DbAction:IDbAction
    
{

        
private string _conStr;
        
private SqlConnection _conn;

        
public DbAction(string conStr)
        
{
            _conStr 
= ConfigurationManager.ConnectionStrings[conStr].ConnectionString;
        }

        
        
public string ConStr
        
{
            
set{_conStr=value;}
            
get return _conStr; }
        }



        
IDbAction 成员

        
private void doAction(string sqlStr)
        
{
            _conn 
= new SqlConnection(_conStr);
            SqlCommand comm 
= new SqlCommand(sqlStr, _conn);
            _conn.Open();
            comm.ExecuteNonQuery();

        }

    }


    
//实例打包。。
    public class ClassBox
    
{
        
/// <summary>
        
/// 将实例的属性压缩到一个queue 中
        
/// </summary>
        
/// <param name="theClass">这个实例</param>
        
/// <returns></returns>

        public Queue doBoxing(object theClass)
        
{
             Queue queue
= new Queue();
            Type P 
= theClass.GetType();
            
foreach (PropertyInfo pi in P.GetProperties())
            
{
                queue.Enqueue(pi.Name.ToLower());
                queue.Enqueue(pi.GetValue(theClass, 
null));
            }

            
return queue;
        }

    }


//此为实例的类实现的接口
    public interface IDbClass
    
{
        
int Id
        
{
            
get;
            
set;
        }

        
    }




/*----------------------------------------------------------
 * add.aspx.cs
----------------------------------------------------------
*/

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class add : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    
{
       

        Person person 
= new Person();

        person.Name 
= Request.Form["name"].ToString();
        person.Age 
= int.Parse(Request.Form["age"].ToString());
        person.Gender 
= Request.Form["gender"].ToString();
        person.Tel 
= Request.Form["tel"].ToString();
        person.Birthday 
= Request.Form["birthday"].ToString();
        person.Homepage 
= Request.Form["homepage"].ToString();

        ClassBox tempBox 
= new ClassBox();
        Queue queue
= tempBox.doBoxing(person);
        DbAction dbAction 
= new DbAction("test1ConnectionString");
        dbAction.insert(queue, 
"person");
        Response.Clear();
        Response.Write(
"{success: true}");

    }

}


数据类的描述


posted @ 2008-05-17 22:27  Atpking  阅读(802)  评论(11编辑  收藏  举报