zoukankan      html  css  js  c++  java
  • 枯燥的数据库插入修改,投机取巧的方法

    在做一些管理系统中可能有很多的插入数据,修改数据操作,重复的数据库操作感觉是极其的枯燥乏味。也许有人用动软生成代码等一些代码生成工具,但是生成的代码免不了复制粘贴然后修改成适合自己的代码。

    所以写了个感觉有点投机取巧的方法,主要思想也是拼接sql语句。对于性能方面,请高手们提出建议。也不知道园中是有由相同的。这个方法结合jquery ajax post方式效果还是不错的。

        /// <summary>
        /// post表单提交,表单数据存入数据库
        /// post传入的参数(表单name值),必须与数据库中列名一样
        /// </summary>
        /// <param name="tableName">数据库表名</param>
        /// <param name="primaryKey">表中主键字段</param>
        /// <param name="primaryKeyValue">主键字段的值,如果为空表示插入操作,否则编辑操作</param>
        public void SaveTableInsertOrUpdateFormPostParameters(string tableName, string primaryKey, string primaryKeyValue)
        {
            string sqlColumn = "";
            string sqlValue = "";
            string sql = "";
    
            //参数数组
            System.Data.SqlClient.SqlParameter[] parameters = new System.Data.SqlClient.SqlParameter[Request.Form.Keys.Count];
    
            //插入操作
            if (string.IsNullOrEmpty(primaryKeyValue))
            {
                for (int i = 0; i < Request.Form.Keys.Count; i++)//循环获取post形式的参数及参数值
                {
                    string column = Request.Form.Keys[i];//数据库列名
                    string value = Request.Form[i];//获取表单的值
                    sqlColumn += column + ",";
                    string parmColumn = "@" + column;
                    sqlValue += parmColumn + ",";
                    if (string.IsNullOrEmpty(value))
                    {
                        parameters[i] = new System.Data.SqlClient.SqlParameter(parmColumn, DBNull.Value);
                    }
                    else
                    {
                        //如果存在汉字编码问题,前台javascript使用escape编码,后台使用Server.UrlDecode()解码
                        parameters[i] = new System.Data.SqlClient.SqlParameter(parmColumn, Server.UrlDecode(value));
                    }
    
                }
                sqlColumn = sqlColumn.Substring(0, sqlColumn.Length - 1);
                sqlValue = sqlValue.Substring(0, sqlValue.Length - 1);
    
                sql = " insert into " + tableName + " (" + sqlColumn + ") values (" + sqlValue + ")";
            }
            else//修改操作
            {
                for (int i = 0; i < Request.Form.Keys.Count; i++)
                {
                    string column = Request.Form.Keys[i];
                    string parmColumn = "@" + column;
                    sql += column + "=" + parmColumn + ",";
                    string value = Request.Form[i];
    
                    if (string.IsNullOrEmpty(value))
                    {
                        parameters[i] = new System.Data.SqlClient.SqlParameter(parmColumn, DBNull.Value);
                    }
                    else
                    {
                        value = Server.UrlDecode(value);
                        parameters[i] = new System.Data.SqlClient.SqlParameter(parmColumn, value);
                    }
    
                }
                sql = sql.Substring(0, sql.Length - 1);
    
                sql = " update " + tableName + " set " + sql + " where " + primaryKey + "='" + primaryKeyValue + "'";
            }
            //数据库访问类,根据实际条件修改
            DbHelperSQLNew db = new DbHelperSQLNew();
            Response.Write(db.ExecuteSql(sql, parameters).ToString());//ExecuteSql执行一条sql语句
        }

    DataTable数据转换成json

     public static string DataTableToJson(DataTable dt)
            {
                StringBuilder json = new StringBuilder();
                
    
                if (dt.Rows.Count > 0 && dt != null)
                {
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        json.Append("{");
                        for (int j = 0; j < dt.Columns.Count; j++)
                        {
    
                            json.Append("\"").Append(dt.Columns[j].ColumnName).Append("\":");
    
                            string s = dt.Columns[j].DataType.Name;
                            Type datetime = dt.Columns[j].DataType;
                            if (datetime == typeof(DateTime))
                            {
                                json.Append("\"").Append((dt.Rows[i][j] != DBNull.Value ? Convert.ToDateTime(dt.Rows[i][j]).ToString("yyyy-MM-dd") : "")).Append("\",");
                            }
                            else
                            {
                                json.Append("\"").Append(dt.Rows[i][j]).Append("\",");
                            }
                        }
                        json.Remove(json.Length - 1, 1);
                        json.Append("},");
                    }
                    json.Remove(json.Length - 1, 1);
                }
                return json.ToString();
            }
        }


     

  • 相关阅读:
    ul制作导航菜单
    HTML5+CSS (简易nav设计)
    鼠标事件-拖拽(滑块控制物体透明度变化)
    鼠标事件-拖拽5(带虚线框的拖拽)
    鼠标事件-拖拽4(捕获)
    鼠标事件-拖拽3(磁性吸附)
    鼠标事件-拖拽2(不能拖出指定对象的div)
    生成整数排列的方法
    python工具程序一、复制目录中指定扩展名的文件
    Anaconda packages list
  • 原文地址:https://www.cnblogs.com/tlbxygw/p/2612856.html
Copyright © 2011-2022 走看看