1 using system; 2 using system.configuration; 3 using system.collections.generic; 4 using system.data; 5 using system.data.common; 6 using system. text ; 7 8 public static class db 9 { ; 11 public static dbproviderfactory factory = dbprovi
1 using system; 2 using system.configuration; 3 using system.collections.generic; 4 using system.data; 5 using system.data.common; 6 using system.text; 7 8 public static class db 9 {; 11 public static dbproviderfactory factory = dbproviderfactories.getfactory(connectionstring.providername); 12 13 public static dbconnection createconnection() 14 { 15 dbconnection con = factory.createconnection(); 16 con.connectionstring = connectionstring.connectionstring; 17 return con; 18 } 19 20 #region 参数 21 22 public static dbparameter createparameter(dbparameter param) 23 { 24 return createparameter(param.parametername, param.value, param.dbtype, param.size, param.direction, param.sourcecolumn, param.sourcecolumnnullmapping, param.sourceversion); 25 } 26 , parameterdirection? direction , bool? sourcecolumnnullmapping ) 28 { 29 dbparameter param = factory.createparameter(); 30 31 param.parametername = parametername; 32 param.value = value; 33 34 if (dbtype != null) 35 param.dbtype = dbtype.value; 36 if (size != null) 37 param.size = size.value; 38 if (direction != null) 39 param.direction = direction.value; 40 if (sourcecolumn != null) 41 param.sourcecolumn = sourcecolumn; 42 if (sourcecolumnnullmapping != null) 43 param.sourcecolumnnullmapping = sourcecolumnnullmapping.value; 44 if (sourceversion != null) 45 param.sourceversion = sourceversion.value; 46 47 return param; 48 } 49 50 private static dbparameter[] convertparameters(object[] parameters) 51 { 52 listdbparameter> paramlist = new listdbparameter>(); 53 54 for (int i = 0; i parameters.length; i++) 55 { dbparametercollection)dbparametercollection) paramlist.add(createparameter(item)); dbparameter) dbparameter);)); 62 } 63 64 return paramlist.toarray(); 65 } 66 67 #endregion 68 69 public static query query(string query, params object[] parameters) 70 { 71 return new query(query, convertparameters(parameters)); 72 } 73 74 public static bool insert(string table, object model) 75 { 76 stringbuilder fields = new stringbuilder(); 77 stringbuilder values = new stringbuilder(); 78 listdbparameter> paramlist = new listdbparameter>(); 79 80 foreach (var item in model.gettype().getproperties()) 81 {,, item.name); 83 values.appendformat(@{0},, item.name); 84 paramlist.add(createparameter(@ + item.name, item.getvalue(model, null))); 85 } 86 ({), )), paramlist.toarray()).execute() > 0; 88 } 89 90 public static bool update(string table, object model, string where, params object[] parameters) 91 { 92 stringbuilder fieldsandvalues = new stringbuilder(); 93 listdbparameter> paramlist = new listdbparameter>(); 94 95 foreach (var item in model.gettype().getproperties()) 96 {@{0},, item.name); 98 paramlist.add(createparameter(@ + item.name, item.getvalue(model, null))); 99 }100 101 paramlist.addrange(convertparameters(parameters));102 {) ;104 }105 }106 107 public class query108 {109 #region 构造方法110 111 public query(string query, dbparameter[] parameters)112 {113 sqlquery = query;114 parameters = parameters;115 }116 117 public query(string query, dbparameter[] parameters, bool isexception)118 : this(query, parameters)119 {120 isexception = isexception;121 }122 123 #endregion124 125 #region 属性/字段126 127 private bool isexception { get; set; }128 public string sqlquery { get; set; }129 public dbparameter[] parameters { get; set; }130 131 #endregion132 133 #region 执行基础134 135 private t executecommont>(funcdbcommand, t> function)136 {137 using (dbconnection con = db.createconnection())138 using (dbcommand cmd = con.createcommand())139 {140 cmd.commandtext = sqlquery;141 cmd.parameters.addrange(parameters);142 con.open();143 t result = function(cmd);144 cmd.parameters.clear();145 return result;146 }147 }148 , t exvalue = default(t))150 {151 if (isexception)152 return executecommont>(function);153 154 try155 {156 return executecommont>(function);157 }158 catch (exception e)159 {160 console.writeline(e.tostring());161 return exvalue;162 }163 }164 165 public void execute(actiondbcommand> action)166 {167 execute(cmd => { action(cmd); return 0; });168 }169 170 #endregion171 172 #region 执行查询173 ()175 {176 return execute(cmd => cmd.executenonquery());177 }178 179 public object scalar()180 {181 return execute(cmd => cmd.executescalar());182 }183 184 public t scalart>()185 {186 return execute(cmd => (t)cmd.executescalar());187 }188 189 public query top(int count)190 {({1}) as t0, count, sqlquery), parameters);192 }193 194 public single tosingle()195 { {198 single s = new single();199 200 using (var dr = cmd.executereader())201 {202 if (dr.read())203 {204 string name = string.empty;205 206 for (int i = 0; i dr.fieldcount; i++)207 {208 name = dr.getname(i);dr;210 }211 }212 else213 {214 throw new exception(not find !!);215 }216 }217 218 return s;219 });220 221 }222 223 public datatable todatatable()224 { {227 dbdataadapter da = db.factory.createdataadapter();228 da.selectcommand = cmd;229 datatable dt = new datatable();230 da.fill(dt);231 return dt;232 });233 }234 235 public listt> tolistt>()236 { {239 listt> list = new listt>();240 241 using (var dr = cmd.executereader())242 {243 while (dr.read())244 {245 type t = typeof(t);246 t s = default(t);247 string name = string.empty;248 249 for (int i = 0; i dr.fieldcount; i++)250 {251 name = dr.getname(i);252 var pro = t.getproperty(name);253 254 if (pro != null), null);256 }257 258 list.add(s);259 }260 }261 262 return list;263 }, new listt>());264 }265 266 public override string tostring()267 {268 return scalarstring>();269 }270 271 #endregion272 273 #region 分页274 275 private query recordcountquery276 {277 get { return db.query(string.format(select count(*) from ({0}) as t0, sqlquery), parameters); }278 }279 280 private query pagerresultquery(string primarykey, int pageindex, int pagesize)281 {({? {2} t1.{3} from ({0}) as t1) : ),284 sqlquery, pagesize, pageindex * pagesize, primarykey), parameters);285 }286 recordcount)288 {());290 return pagerresultquery(primarykey, pageindex, pagesize).todatatable();291 }292 recordcount)294 {295 return topager(id, pageindex, pagesize, recordcount);296 }297 recordcount)299 {());301 return pagerresultquery(primarykey, pageindex, pagesize).tolistt>();302 }303 recordcount)305 {306 return topagert>(id, pageindex, pagesize, recordcount);307 }308 309 #endregion310 }311 { {; }317 set { add(name.tolower(), value); }318 }319 },网站空间,美国服务器,虚拟主机