static public void Insert_sql (строковое имя таблицы, Hashtable param_employeefield, строка connstring)
{
//System.Web.HttpContext.Current.Response.Write("xxx");
Hashtable ht_field=new Hashtable();
ht_field = getfieldtype (имя таблицы, строка подключения); // 表的字段
строка field_value;
строка field_type;//字段类型
string str_sql_fieldname="insert in " + "tablename("; //插入语句
строка str_sql_fieldvalue=" значения(";
строка str_sql;
foreach (объект obj_param в поле param_employee)
{
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_fieldname+str_sql_fieldvalue;
nsn.core.SqlHelper.ExecuteNonQuery(connstring,CommandType.Text,str_sql);
}
static public void update_sql (строковое имя таблицы, хэш-таблица param_employeefield, строка connstring)
{
Hashtable ht_field=new Hashtable();
ht_field = getfieldtype (имя таблицы, строка подключения);
строка field_value;
строка field_type;
StringBuilder str_sql = новый StringBuilder();
str_sql.Append("обновление" + "набор имен таблиц");
строка sql1;
foreach (объект obj_param в поле param_employee)
{
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);
}
Статическая защищенная строка Judgetype (строка field_type, строка field_value)
{
строка str_value;
переключатель (field_type)
{
случай «int»: str_value=field_value;
перерыв;
регистр "varchar": str_value="'"+field_value+"'";
перерыв;
случай "ntext": str_value="'"+field_value+"'";
перерыв;
случай "datetime":str_value="'"+field_value+"'";
перерыв;
случай «tinyint»: str_value=field_value;
перерыв;
случай «smallint»: str_value=field_value;
перерыв;
}
возврат (тип_поля);
}
Статическая защищенная Hashtable getfieldtype (имя таблицы, строка connstring)
{
DataSet ds = новый DataSet();
Hashtable ht_field=new Hashtable();
SqlParameter[] paramsToStore = новый SqlParameter[1];
paramsToStore[0] = новый SqlParameter("@tablename", SqlDbType.NVarChar);
paramsToStore[0].Direction=ParameterDirection.Input;
paramsToStore[0].Value=имя_таблицы;
ds=nsn.core.SqlHelper.ExecuteDataset(connstring,CommandType.StoredProcedure,"main_searchtable",paramsToStore);
DataTable tbl=ds.Tables[0];
foreach (строка DataRow в таблице tbl.Rows)
{
ht_field.Add(row["字段名"].ToString(),row["类型"].ToString());
//System.Web.HttpContext.Current.Response.Write(row["字段名"].ToString());
}
возврат (ht_field);
}
main_searchtable 存储过程是
СОЗДАТЬ ПРОЦЕДУРУ main_searchtable
@tablename nvarchar(50)
КАК
ВЫБИРАТЬ
表名=случай, когда a.colorder=1, затем d.name else '' конец,
表说明=случай, когда a.colorder=1 then isnull(f.value,'') else '' end,
字段序号=a.colorder,
字段名=a.name,
标识=случай, когда COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1, затем заканчивается '√'else '',
类型=b.имя
ИЗ системных столбцов
оставил системные типы соединения b на a.xtype=b.xusertype
внутренние системные объекты соединения d на a.id=d.id и d.xtype='U' и d.name<>'dtproperties'
левое соединение системных свойств f на d.id=f.id и f.smallid=0
где d.name=@tablename --如果只查询指定表,加上此条件
заказать через a.id,a.colorder
ПОЙДИТЕ
http://liuxiaoyi666.cnblogs.com/archive/2006/05/28/411082.html.