static public void insert_sql(string tablename,Hashtable param_employeefield,string connstring)
{
//System.Web.HttpContext.Current.Response.Write("xxx");
ハッシュテーブル ht_field=新しいハッシュテーブル();
ht_field=getfieldtype(テーブル名,connstring); //表のフィールド
文字列フィールド値;
string field_type;//文字列タイプ
string str_sql_fieldname="insert into " + "tablename("; //插入语句
文字列 str_sql_fieldvalue="values(";
文字列 str_sql;
foreach(param_employeefield のオブジェクト obj_param)
{
field_type=ht_field[obj_param.ToString()].ToString();//int 型または varchar 型等等
field_value=param_employeefield[obj_param].ToString();
str_sql_fieldname+=param_employeefield[obj_param].ToString()+",";
str_sql_fieldvalue+=judgetype(field_type,field_value)+",";
str_sql_fieldname
=str_sql_fieldname.Substring(1,str_sql_fieldname.Length)+")";
str_sql_fieldvalue=str_sql_fieldvalue.Substring(1,str_sql_fieldvalue.Length)+")";
str_sql=str_sql_フィールド名+str_sql_フィールド値;
nsn.core.SqlHelper.ExecuteNonQuery(connstring,CommandType.Text,str_sql);
静的 public void update_sql(string テーブル名、ハッシュテーブル param_employeefield、string connstring
)
{
ハッシュテーブル ht_field=新しいハッシュテーブル();
ht_field=getfieldtype(テーブル名,connstring);
文字列フィールド値;
文字列フィールドタイプ;
StringBuilder str_sql = 新しい StringBuilder();
str_sql.Append("更新 " + "テーブル名セット ");
文字列 SQL1;
foreach(param_employeefield のオブジェクト obj_param)
{
field_type=ht_field[obj_param.ToString()].ToString();
field_value=param_employeefield[obj_param].ToString();
str_sql.Append(param_employeefield[obj_param].ToString()+"="+judgetype(field_type,field_value)+",");
}
sql1=str_sql.ToString().Substring(1,str_sql.ToString().Length-1)+" ここで";
nsn.core.SqlHelper.ExecuteNonQuery(connstring,CommandType.Text,sql1);
タイプ
(文字列フィールドタイプ,文字列フィールド値)
{
文字列 str_value;
スイッチ(フィールドタイプ)
{
case "int": str_value=field_value;
壊す;
case "varchar": str_value="'"+field_value+"'";
壊す;
case "ntext": str_value="'"+field_value+"'";
壊す;
case "日時":str_value="'"+field_value+"'";
壊す;
ケース "tinyint": str_value=field_value;
壊す;
case "smallint": str_value=field_value;
壊す;
}
戻り値(フィールドタイプ);
静的
に保護されたハッシュテーブル getfieldtype(string tablename,string connstring)
{
DataSet ds = 新しい DataSet();
ハッシュテーブル ht_field=新しいハッシュテーブル();
SqlParameter[] paramsToStore = 新しい SqlParameter[1];
paramsToStore[0] = new SqlParameter("@テーブル名", SqlDbType.NVarChar);
paramsToStore[0].Direction=ParameterDirection.Input;
paramsToStore[0].Value=テーブル名;
ds=nsn.core.SqlHelper.ExecuteDataset(connstring,CommandType.StoredProcedure,"main_searchtable",paramsToStore);
データテーブル tbl=ds.Tables[0];
foreach(tbl.Rows の DataRow 行)
{
ht_field.Add(row["字段名"].ToString(),row["类型"].ToString());
//System.Web.HttpContext.Current.Response.Write(row["字段名"].ToString());
}
return(ht_field);
main_searchtable
は存在します
CREATE PROCEDURE main_searchtable
@テーブル名 nvarchar(50)
として
選択
表名=case when a.colorder=1 then d.name else '' end,
表说明=case when a.colorder=1 then isnull(f.value,'') else '' end,
字段序号=a.colorder,
字段名=a.name,
标识=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,
種類=b.name
FROM syscolumns a
a.xtype=b.xusertype で systypes b を左結合します
a.id=d.id および d.xtype='U' および d.name<>'dtproperties' の内部結合 sysobjects d
d.id=f.id および f.smallid=0 の sysproperties f を左結合します
where d.name=@tablename --如果只查询指定表、追加此条件
a.id、a.colorder で注文する
http://liuxiaoyi666.cnblogs.com/archive/2006/05/28/411082.html
にアクセスしてください