zoukankan      html  css  js  c++  java
  • 自己写的一个通过对象更新数据库的例子

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

    另外想咨询下大家,大家用的绘制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}");

        }

    }


    数据类的描述


  • 相关阅读:
    springboot项目创建父级依赖
    springboot整合测试
    springboot中使用RedisTemplate实现redis数据缓存
    springboot整合redis
    springboot整合shiro
    配置 maven 环境变量
    虚拟机和主机之间一系列工具包,开启双向复制粘贴后导致的内存占用问题
    mysql服务无法启动的问题
    Linux学习遇到的问题(权限问题:例如无法创建目录"**": 权限不够"等等)
    Windows 10 配置Git 环境变量(还有:安装git后,鼠标右键没有“git bush here”)
  • 原文地址:https://www.cnblogs.com/jicheng1014/p/1201600.html
Copyright © 2011-2022 走看看