枯燥的數據庫插入修改,投機取巧的方法


在做一些管理系統中可能有很多的插入數據,修改數據操作,重復的數據庫操作感覺是極其的枯燥乏味。也許有人用動軟生成代碼等一些代碼生成工具,但是生成的代碼免不了復制粘貼然后修改成適合自己的代碼。

所以寫了個感覺有點投機取巧的方法,主要思想也是拼接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();
        }
    }

 


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM