枯燥的数据库插入修改,投机取巧的方法
在做一些管理系统中可能有很多的插入数据,修改数据操作,重复的数据库操作感觉是极其的枯燥乏味。也许有人用动软生成代码等一些代码生成工具,但是生成的代码免不了复制粘贴然后修改成适合自己的代码。
所以写了个感觉有点投机取巧的方法,主要思想也是拼接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(); } }