C# .NET万能数据库访问封装类(ACCESS、SQLServer、Oracle)

2023-11-19

  1. 在app.config文件中写上数据库中连接信息:  
  2. <appSettings>  
  3.     <add key="connectionstring" value="Data Source=LocalHost;Initial Catalog=Test001;User ID=sa;Password=aaaaaa" />  
  4.     <add key="DataType" value="SqlServer" />  
  5.  </appSettings>  
  6. app.config文件中代码解析:  
  7. <appSettings>  
  8.     <add key="connectionstring" value="Data Source=你的数据库器(本机可用LocalHost,如果是EXPRESS开发版则必须是.\SQLEXPRESS);Initial Catalog=数据库名字;User ID=用户名;Password=你自己的密码" />  
  9.     <add key="TemplatePATH" value="Template" />  
  10. </appSettings>  
小注:

同理web程序,可以把数据库连接信息放到web.config中。

C#.NET万能数据库访问封装类代码如下:(该代码来自百度文库,非自己编写)

[html]  view plain  copy   在CODE上查看代码片 派生到我的代码片
  1. <pre code_snippet_id="147172" snippet_file_name="blog_20140108_1_6139061" class="html" name="code"><div><pre code_snippet_id="147172" snippet_file_name="blog_20140108_1_6139061" class="prettyprint" name="code"><pre code_snippet_id="147172" snippet_file_name="blog_20140108_1_6139061" class="csharp" name="code">using System;  
  2. using System.Linq;  
  3. using System.Text;  
  4. using System.Collections;  
  5. using System.Collections.Specialized;  
  6. using System.Data;  
  7. using System.Data.SqlClient;  
  8. using System.Data.OleDb;  
  9. using System.Data.OracleClient;  
  10. using System.Configuration;  
  11. using System.Reflection;  
  12.   
  13. namespace SystemFramework.DAL  
  14. {  
  15.     class DataBaseLayer  
  16.     {  
  17.         #region  属性变量     
  18.         private string connectionString;  
  19.         public string ConntionString  
  20.         {  
  21.             get  
  22.             {  
  23.                 return connectionString;  
  24.             }  
  25.             set  
  26.             {  
  27.                 connectionString = value;  
  28.             }  
  29.         }  
  30.         //数据访问基础类--构造函数  
  31.         public DataBaseLayer(string strConnect, string dataType)  
  32.         {  
  33.             this.ConntionString = strConnect;  
  34.             this.DbType = dataType;  
  35.         }  
  36.         //数据访问基础类--构造函数  
  37.         public DataBaseLayer()  
  38.         {  
  39.             this.connectionString =ConfigurationManager.AppSettings["ConnectionString"];  
  40.             this.dbType =ConfigurationManager.AppSettings["DataType"];  
  41.             //也可以在代码中直接赋值  
  42.             //this.connectionString = "data source=192.168.1.43;user id=sa;pwd=sa;database=temphrdb";  
  43.             //this.dbType = "SqlServer";  
  44.         }  
  45.         /// <summary>  
  46.         /// 数据库类型   
  47.         /// </summary>  
  48.         private string dbType;  
  49.         public string DbType  
  50.         {  
  51.             get  
  52.             {  
  53.                 if (string.IsNullOrEmpty(dbType))  
  54.                 {  
  55.                     return "Access";  
  56.                 }  
  57.                 else  
  58.                 {  
  59.                     return dbType;  
  60.                 }  
  61.             }  
  62.             set  
  63.             {  
  64.                 if (value != string.Empty && value != null)  
  65.                 {  
  66.                     dbType = value;  
  67.                 }  
  68.                 if (string.IsNullOrEmpty(dbType))  
  69.                 {  
  70.                     dbType =ConfigurationManager.AppSettings["DataType"];  
  71.                 }  
  72.                 if (string.IsNullOrEmpty(dbType))  
  73.                 {  
  74.                     dbType = "Access";  
  75.                 }  
  76.             }  
  77.         }  
  78.         #endregion  
  79.         #region 转换参数  
  80.         private System.Data.IDbDataParameter iDbPara(string ParaName, string DataType)  
  81.         {  
  82.             switch (this.DbType)  
  83.             {  
  84.                 case "SqlServer":  
  85.                     return GetSqlPara(ParaName, DataType);  
  86.                 case "Oracle":  
  87.                     return GetOleDbPara(ParaName, DataType);  
  88.                 case "Access":  
  89.                     return GetOleDbPara(ParaName, DataType);  
  90.                 default:  
  91.                     return GetSqlPara(ParaName, DataType);  
  92.             }  
  93.         }  
  94.   
  95.         private SqlParameter GetSqlPara(string ParaName, string DataType)  
  96.         {  
  97.             switch (DataType)  
  98.             {  
  99.                 case "Decimal":  
  100.                     return new SqlParameter(ParaName, SqlDbType.Decimal);  
  101.                 case "Varchar":  
  102.                     return new SqlParameter(ParaName, SqlDbType.VarChar);  
  103.                 case "DateTime":  
  104.                     return new SqlParameter(ParaName, SqlDbType.DateTime);  
  105.                 case "Iamge":  
  106.                     return new SqlParameter(ParaName, SqlDbType.Image);  
  107.                 case "Int":  
  108.                     return new SqlParameter(ParaName, SqlDbType.Int);  
  109.                 case "Text":  
  110.                     return new SqlParameter(ParaName, SqlDbType.NText);  
  111.                 default:  
  112.                     return new SqlParameter(ParaName, SqlDbType.VarChar);  
  113.             }  
  114.         }  
  115.         private OracleParameter GetOraclePara(string ParaName, string DataType)  
  116.         {  
  117.             switch (DataType)  
  118.             {  
  119.                 case "Decimal":  
  120.                     return new OracleParameter(ParaName, OracleType.Double);  
  121.                 case "Varchar":  
  122.                     return new OracleParameter(ParaName, OracleType.VarChar);  
  123.                 case "DateTime":  
  124.                    return new OracleParameter(ParaName, OracleType.DateTime);  
  125.                 case "Iamge":  
  126.                     return new OracleParameter(ParaName, OracleType.BFile);  
  127.                 case "Int":  
  128.                     return new OracleParameter(ParaName, OracleType.Int32);  
  129.                 case "Text":  
  130.                     return new OracleParameter(ParaName, OracleType.LongVarChar);  
  131.                 default:  
  132.                     return new OracleParameter(ParaName, OracleType.VarChar);  
  133.   
  134.             }  
  135.         }  
  136.         private OleDbParameter GetOleDbPara(string ParaName, string DataType)  
  137.         {  
  138.             switch (DataType)  
  139.             {  
  140.                 case "Decimal":  
  141.                     return new OleDbParameter(ParaName, System.Data.DbType.Decimal);  
  142.                 case "Varchar":  
  143.                     return new OleDbParameter(ParaName, System.Data.DbType.String);  
  144.                 case "DateTime":  
  145.                     return new OleDbParameter(ParaName, System.Data.DbType.DateTime);  
  146.                 case "Iamge":  
  147.                     return new OleDbParameter(ParaName, System.Data.DbType.Binary);  
  148.                 case "Int":  
  149.                     return new OleDbParameter(ParaName, System.Data.DbType.Int32);  
  150.                 case "Text":  
  151.                     return new OleDbParameter(ParaName, System.Data.DbType.String);  
  152.                 default:  
  153.                     return new OleDbParameter(ParaName, System.Data.DbType.String);  
  154.             }  
  155.         }  
  156.         #endregion  
  157.         #region 创建 Connection 和 Command  
  158.         private IDbConnection GetConnection()  
  159.         {  
  160.             switch (this.DbType)  
  161.             {  
  162.                 case "SqlServer":  
  163.                     return new SqlConnection(this.ConntionString);  
  164.                 case "Oracle":  
  165.                     return new OracleConnection(this.ConntionString);  
  166.                 case "Access":  
  167.                     return new OleDbConnection(this.ConntionString);  
  168.                 default:  
  169.                     return new SqlConnection(this.ConntionString);  
  170.             }  
  171.         }  
  172.         private IDbCommand GetCommand(string Sql, IDbConnection iConn)  
  173.         {  
  174.             switch (this.DbType)  
  175.             {  
  176.                 case "SqlServer":  
  177.                     return new SqlCommand(Sql, (SqlConnection)iConn);  
  178.                 case "Oracle":  
  179.                     return new OracleCommand(Sql, (OracleConnection)iConn);  
  180.                 case "Access":  
  181.                     return new OleDbCommand(Sql, (OleDbConnection)iConn);  
  182.                 default:  
  183.                     return new SqlCommand(Sql, (SqlConnection)iConn);  
  184.             }  
  185.         }  
  186.         private IDbCommand GetCommand()  
  187.         {  
  188.             switch (this.DbType)  
  189.             {  
  190.                 case "SqlServer":  
  191.                     return new SqlCommand();  
  192.                 case "Oracle":  
  193.                     return new OracleCommand();  
  194.                 case "Access":  
  195.                     return new OleDbCommand();  
  196.                 default:  
  197.                     return new SqlCommand();  
  198.             }  
  199.         }  
  200.         private IDataAdapter GetAdapater(string Sql, IDbConnection iConn)  
  201.         {  
  202.             switch (this.DbType)  
  203.             {  
  204.                 case "SqlServer":  
  205.                     return new SqlDataAdapter(Sql, (SqlConnection)iConn);  
  206.                 case "Oracle":  
  207.                     return new OracleDataAdapter(Sql, (OracleConnection)iConn);  
  208.                 case "Access":  
  209.                     return new OleDbDataAdapter(Sql, (OleDbConnection)iConn);  
  210.                 default:  
  211.                     return new SqlDataAdapter(Sql, (SqlConnection)iConn); ;  
  212.             }  
  213.         }  
  214.         private IDataAdapter GetAdapater()  
  215.         {  
  216.             switch (this.DbType)  
  217.             {  
  218.                 case "SqlServer":  
  219.                     return new SqlDataAdapter();  
  220.                 case "Oracle":  
  221.                     return new OracleDataAdapter();  
  222.                 case "Access":  
  223.                     return new OleDbDataAdapter();  
  224.                 default:  
  225.                     return new SqlDataAdapter();  
  226.             }  
  227.         }  
  228.         private IDataAdapter GetAdapater(IDbCommand iCmd)  
  229.         {  
  230.             switch (this.DbType)  
  231.             {  
  232.                 case "SqlServer":  
  233.                     return new SqlDataAdapter((SqlCommand)iCmd);  
  234.                 case "Oracle":  
  235.                     return new OracleDataAdapter((OracleCommand)iCmd);  
  236.                 case "Access":  
  237.                     return new OleDbDataAdapter((OleDbCommand)iCmd);  
  238.                 default:  
  239.                     return new SqlDataAdapter((SqlCommand)iCmd);  
  240.             }  
  241.         }  
  242.         #endregion  
  243.         #region  执行简单SQL语句  
  244.         /// <summary>  
  245.         /// 执行SQL语句,返回影响的记录数  
  246.         /// </summary>  
  247.         /// <param name="SQLString">SQL语句</param>  
  248.         /// <returns>影响的记录数</returns>  
  249.         public int ExecuteSql(string SqlString)  
  250.         {  
  251.             using (IDbConnection iConn = this.GetConnection())  
  252.             {  
  253.                 using (IDbCommand iCmd = GetCommand(SqlString, iConn))  
  254.                 {  
  255.                     iConn.Open();  
  256.                     try  
  257.                     {  
  258.                         int rows = iCmd.ExecuteNonQuery();  
  259.                         return rows;  
  260.                     }  
  261.                     catch (System.Exception E)  
  262.                     {  
  263.                         throw new Exception(E.Message);  
  264.                     }  
  265.                     finally  
  266.                     {  
  267.                         if (iConn.State != ConnectionState.Closed)  
  268.                         {  
  269.                             iConn.Close();  
  270.                         }  
  271.                     }  
  272.                 }  
  273.             }  
  274.         }  
  275.         /// <summary>  
  276.         /// 执行多条SQL语句,实现数据库事务。  
  277.         /// </summary>  
  278.         /// <param name="SQLStringList">多条SQL语句</param>          
  279.         public void ExecuteSqlTran(ArrayList SQLStringList)  
  280.         {  
  281.             //using作为语句,用于定义一个范围,在此范围的末尾将释放对象  
  282.             using (IDbConnection iConn = this.GetConnection())  
  283.             {  
  284.                 iConn.Open();  
  285.                 using (IDbCommand iCmd = GetCommand())  
  286.                 {  
  287.                     iCmd.Connection = iConn;  
  288.                     using (System.Data.IDbTransaction iDbTran = iConn.BeginTransaction())  
  289.                     {  
  290.                         iCmd.Transaction = iDbTran;  
  291.                         try  
  292.                         {  
  293.                             for (int n = 0; n < SQLStringList.Count; n++)  
  294.                             {  
  295.                                 string strsql = SQLStringList[n].ToString();  
  296.                                 if (strsql.Trim().Length > 1)  
  297.                                 {  
  298.                                     iCmd.CommandText = strsql;  
  299.                                     iCmd.ExecuteNonQuery();  
  300.                                 }  
  301.                             }  
  302.                             iDbTran.Commit();  
  303.                         }  
  304.                         catch (System.Exception E)  
  305.                         {  
  306.                             iDbTran.Rollback();  
  307.                             throw new Exception(E.Message);  
  308.                         }  
  309.                         finally  
  310.                         {  
  311.                             if (iConn.State != ConnectionState.Closed)  
  312.                             {  
  313.                                 iConn.Close();  
  314.                             }  
  315.                         }  
  316.                     }  
  317.                 }  
  318.             }  
  319.         }  
  320.         /// <summary>  
  321.         /// 执行带一个存储过程参数的的SQL语句。  
  322.         /// </summary>  
  323.         /// <param name="SQLString">SQL语句</param>  
  324.         /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>  
  325.         /// <returns>影响的记录数</returns>  
  326.         public int ExecuteSql(string SqlString, string content)  
  327.         {  
  328.             using (IDbConnection iConn = this.GetConnection())  
  329.             {  
  330.                 using (IDbCommand iCmd = GetCommand(SqlString, iConn))  
  331.                 {  
  332.                     IDataParameter myParameter = this.iDbPara("@content", "Text");  
  333.                     myParameter.Value = content;  
  334.                     iCmd.Parameters.Add(myParameter);  
  335.                     iConn.Open();  
  336.                     try  
  337.                     {  
  338.                         int rows = iCmd.ExecuteNonQuery();  
  339.                         return rows;  
  340.                     }  
  341.                     catch (System.Exception e)  
  342.                     {  
  343.                         throw new Exception(e.Message);  
  344.                     }  
  345.                     finally  
  346.                     {  
  347.                         if (iConn.State != ConnectionState.Closed)  
  348.                         {  
  349.                             iConn.Close();  
  350.                         }  
  351.                     }  
  352.                 }  
  353.             }  
  354.         }  
  355.         /// <summary>  
  356.         /// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例)  
  357.         /// </summary>  
  358.         /// <param name="strSQL">SQL语句</param>  
  359.         /// <param name="fs">图像字节,数据库的字段类型为image的情况</param>  
  360.         /// <returns>影响的记录数</returns>  
  361.         public int ExecuteSqlInsertImg(string SqlString, byte[] fs)  
  362.         {  
  363.             using (IDbConnection iConn = this.GetConnection())  
  364.             {  
  365.                 using (IDbCommand iCmd = GetCommand(SqlString, iConn))  
  366.                 {  
  367.                     IDataParameter myParameter = this.iDbPara("@content", "Image");  
  368.                     myParameter.Value = fs;  
  369.                     iCmd.Parameters.Add(myParameter);  
  370.                     iConn.Open();  
  371.                     try  
  372.                     {  
  373.                         int rows = iCmd.ExecuteNonQuery();  
  374.                         return rows;  
  375.                     }  
  376.                     catch (System.Exception e)  
  377.                     {  
  378.                         throw new Exception(e.Message);  
  379.                     }  
  380.                     finally  
  381.                     {  
  382.                         if (iConn.State != ConnectionState.Closed)  
  383.                         {  
  384.                             iConn.Close();  
  385.                         }  
  386.                     }  
  387.                 }  
  388.             }  
  389.         }  
  390.         /// <summary>  
  391.         /// 执行一条计算查询结果语句,返回查询结果(object)。  
  392.         /// </summary>  
  393.         /// <param name="SQLString">计算查询结果语句</param>  
  394.         /// <returns>查询结果(object)</returns>  
  395.         public object GetSingle(string SqlString)  
  396.         {  
  397.             using (IDbConnection iConn = GetConnection())  
  398.             {  
  399.                 using (IDbCommand iCmd = GetCommand(SqlString, iConn))  
  400.                 {  
  401.                     iConn.Open();  
  402.                     try  
  403.                     {  
  404.                         object obj = iCmd.ExecuteScalar();  
  405.                         if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
  406.                         {  
  407.                             return null;  
  408.                         }  
  409.                         else  
  410.                         {  
  411.                             return obj;  
  412.                         }  
  413.                     }  
  414.                     catch (System.Exception e)  
  415.                     {  
  416.                         throw new Exception(e.Message);  
  417.                     }  
  418.                     finally  
  419.                     {  
  420.                         if (iConn.State != ConnectionState.Closed)  
  421.                         {  
  422.                             iConn.Close();  
  423.                         }  
  424.                     }  
  425.                 }  
  426.             }  
  427.         }       
  428.         /// <summary>  
  429.         /// 执行查询语句,返回IDataAdapter  
  430.         /// </summary>  
  431.         /// <param name="strSQL">查询语句</param>  
  432.         /// <returns>IDataAdapter</returns>  
  433.         public IDataAdapter ExecuteReader(string strSQL)  
  434.         {  
  435.             using (IDbConnection iConn = this.GetConnection())  
  436.             {  
  437.                 iConn.Open();  
  438.                 try  
  439.                 {  
  440.                     IDataAdapter iAdapter = this.GetAdapater(strSQL, iConn);  
  441.                     return iAdapter;  
  442.                 }  
  443.                 catch (System.Exception e)  
  444.                 {  
  445.                     throw new Exception(e.Message);  
  446.                 }  
  447.                 finally  
  448.                 {  
  449.                     if (iConn.State != ConnectionState.Closed)  
  450.                     {  
  451.                         iConn.Close();  
  452.                     }  
  453.                 }  
  454.             }  
  455.         }  
  456.         /// <summary>  
  457.         /// 执行查询语句,返回DataSet  
  458.         /// </summary>  
  459.         /// <param name="SQLString">查询语句</param>  
  460.         /// <returns>DataSet</returns>  
  461.         public DataSet Query(string sqlString)  
  462.         {  
  463.             using (IDbConnection iConn = this.GetConnection())  
  464.             {  
  465.                 using (IDbCommand iCmd = GetCommand(sqlString, iConn))  
  466.                 {  
  467.                     DataSet ds = new DataSet();  
  468.                     iConn.Open();  
  469.                     try  
  470.                     {  
  471.                         IDataAdapter iAdapter = this.GetAdapater(sqlString, iConn);  
  472.                         iAdapter.Fill(ds);  
  473.                         return ds;  
  474.                     }  
  475.                     catch (System.Exception ex)  
  476.                     {  
  477.                         throw new Exception(ex.Message);  
  478.                     }  
  479.                     finally  
  480.                     {  
  481.                         if (iConn.State != ConnectionState.Closed)  
  482.                         {  
  483.                             iConn.Close();  
  484.                         }  
  485.                     }  
  486.                 }  
  487.             }  
  488.         }  
  489.         /// <summary>  
  490.         /// 执行查询语句,返回DataSet  
  491.         /// </summary>  
  492.         /// <param name="sqlString">查询语句</param>  
  493.         /// <param name="dataSet">要填充的DataSet</param>  
  494.         /// <param name="tableName">要填充的表名</param>  
  495.         /// <returns>DataSet</returns>  
  496.         public DataSet Query(string sqlString, DataSet dataSet, string tableName)  
  497.         {  
  498.             using (IDbConnection iConn = this.GetConnection())  
  499.             {  
  500.                 using (IDbCommand iCmd = GetCommand(sqlString, iConn))  
  501.                 {  
  502.                     iConn.Open();  
  503.                     try  
  504.                     {  
  505.                         IDataAdapter iAdapter = this.GetAdapater(sqlString, iConn);  
  506.                         ((OleDbDataAdapter)iAdapter).Fill(dataSet, tableName);  
  507.                         return dataSet;  
  508.                     }  
  509.                     catch (System.Exception ex)  
  510.                     {  
  511.                         throw new Exception(ex.Message);  
  512.                     }  
  513.                     finally  
  514.                     {  
  515.                         if (iConn.State != ConnectionState.Closed)  
  516.                         {  
  517.                             iConn.Close();  
  518.                         }  
  519.                     }  
  520.                 }  
  521.             }  
  522.         }  
  523.         /// <summary>  
  524.         /// 执行SQL语句 返回存储过程  
  525.         /// </summary>  
  526.         /// <param name="sqlString">Sql语句</param>  
  527.         /// <param name="dataSet">要填充的DataSet</param>  
  528.         /// <param name="startIndex">开始记录</param>  
  529.         /// <param name="pageSize">页面记录大小</param>  
  530.         /// <param name="tableName">表名称</param>  
  531.         /// <returns>DataSet</returns>  
  532.         public DataSet Query(string sqlString, DataSet dataSet, int startIndex, int pageSize, string tableName)  
  533.         {  
  534.             using (IDbConnection iConn = this.GetConnection())  
  535.             {  
  536.                 iConn.Open();  
  537.                 try  
  538.                 {  
  539.                     IDataAdapter iAdapter = this.GetAdapater(sqlString, iConn);  
  540.   
  541.                     ((OleDbDataAdapter)iAdapter).Fill(dataSet, startIndex, pageSize, tableName);  
  542.   
  543.                     return dataSet;  
  544.                 }  
  545.                 catch (Exception ex)  
  546.                 {  
  547.                     throw new Exception(ex.Message);  
  548.                 }  
  549.                 finally  
  550.                 {  
  551.                     if (iConn.State != ConnectionState.Closed)  
  552.                     {  
  553.                         iConn.Close();  
  554.                     }  
  555.                 }  
  556.             }  
  557.         }  
  558.         /// <summary>  
  559.         /// 执行查询语句,向XML文件写入数据  
  560.         /// </summary>  
  561.         /// <param name="sqlString">查询语句</param>  
  562.         /// <param name="xmlPath">XML文件路径</param>  
  563.         public void WriteToXml(string sqlString, string xmlPath)  
  564.         {  
  565.             Query(sqlString).WriteXml(xmlPath);  
  566.         }  
  567.         /// <summary>  
  568.         /// 执行查询语句  
  569.         /// </summary>  
  570.         /// <param name="SqlString">查询语句</param>  
  571.         /// <returns>DataTable </returns>  
  572.         public DataTable ExecuteQuery(string sqlString)  
  573.         {  
  574.             using (IDbConnection iConn = this.GetConnection())  
  575.             {  
  576.                 //IDbCommand iCmd  =  GetCommand(sqlString,iConn);  
  577.                 DataSet ds = new DataSet();  
  578.                 try  
  579.                 {  
  580.                     IDataAdapter iAdapter = this.GetAdapater(sqlString, iConn);  
  581.                     iAdapter.Fill(ds);  
  582.                 }  
  583.                 catch (System.Exception e)  
  584.                 {  
  585.                     throw new Exception(e.Message);  
  586.                 }  
  587.                 finally  
  588.                 {  
  589.                     if (iConn.State != ConnectionState.Closed)  
  590.                     {  
  591.                         iConn.Close();  
  592.                     }  
  593.                 }  
  594.                 return ds.Tables[0];  
  595.             }  
  596.         }  
  597.         /// <summary>  
  598.         /// 执行查询语句  
  599.         /// </summary>  
  600.         /// <param name="SqlString">查询语句</param>  
  601.         /// <returns>DataTable </returns>  
  602.         public DataTable ExecuteQuery(string SqlString, string Proc)  
  603.         {  
  604.             using (IDbConnection iConn = this.GetConnection())  
  605.             {  
  606.                 using (IDbCommand iCmd = GetCommand(SqlString, iConn))  
  607.                 {  
  608.                     iCmd.CommandType = CommandType.StoredProcedure;  
  609.                     DataSet ds = new DataSet();  
  610.                     try  
  611.                     {  
  612.                         IDataAdapter iDataAdapter = this.GetAdapater(SqlString, iConn);  
  613.                         iDataAdapter.Fill(ds);  
  614.                     }  
  615.                     catch (System.Exception e)  
  616.                     {  
  617.                         throw new Exception(e.Message);  
  618.                     }  
  619.                     finally  
  620.                     {  
  621.                         if (iConn.State != ConnectionState.Closed)  
  622.                         {  
  623.                             iConn.Close();  
  624.                         }  
  625.                     }  
  626.                     return ds.Tables[0];  
  627.                 }  
  628.             }  
  629.         }  
  630.         /// <summary>  
  631.         /// 执行查询,并以DataView返回结果集   
  632.         /// </summary>  
  633.         /// <param name="Sql">SQL语句</param>  
  634.         /// <returns>DataView</returns>  
  635.         public DataView ExeceuteDataView(string Sql)  
  636.         {  
  637.             using (IDbConnection iConn = this.GetConnection())  
  638.             {  
  639.                 using (IDbCommand iCmd = GetCommand(Sql, iConn))  
  640.                 {  
  641.                     DataSet ds = new DataSet();  
  642.                     try  
  643.                     {  
  644.                         IDataAdapter iDataAdapter = this.GetAdapater(Sql, iConn);  
  645.                         iDataAdapter.Fill(ds);  
  646.                         return ds.Tables[0].DefaultView;  
  647.                     }  
  648.                     catch (System.Exception e)  
  649.                     {  
  650.                         throw new Exception(e.Message);  
  651.                     }  
  652.                     finally  
  653.                     {  
  654.                         if (iConn.State != ConnectionState.Closed)  
  655.                         {  
  656.                             iConn.Close();  
  657.                         }  
  658.                     }  
  659.                 }  
  660.             }  
  661.         }  
  662.         #endregion  
  663.         #region 执行带参数的SQL语句  
  664.         /// <summary>  
  665.         /// 执行SQL语句,返回影响的记录数  
  666.         /// </summary>  
  667.         /// <param name="SQLString">SQL语句</param>  
  668.         /// <returns>影响的记录数</returns>  
  669.         public int ExecuteSql(string SQLString, params IDataParameter[] iParms)  
  670.         {  
  671.             using (IDbConnection iConn = this.GetConnection())  
  672.             {  
  673.                 IDbCommand iCmd = GetCommand();  
  674.                 {  
  675.                     try  
  676.                     {  
  677.                         PrepareCommand(out iCmd, iConn, null, SQLString, iParms);  
  678.                         int rows = iCmd.ExecuteNonQuery();  
  679.                         iCmd.Parameters.Clear();  
  680.                         return rows;  
  681.                     }  
  682.                     catch (System.Exception E)  
  683.                     {  
  684.                         throw new Exception(E.Message);  
  685.                     }  
  686.                     finally  
  687.                     {  
  688.                         iCmd.Dispose();  
  689.                         if (iConn.State != ConnectionState.Closed)  
  690.                         {  
  691.                             iConn.Close();  
  692.                         }  
  693.                     }  
  694.                 }  
  695.             }  
  696.         }  
  697.         /// <summary>  
  698.         /// 执行多条SQL语句,实现数据库事务。  
  699.         /// </summary>  
  700.         /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>  
  701.         public void ExecuteSqlTran(Hashtable SQLStringList)  
  702.         {  
  703.             using (IDbConnection iConn = this.GetConnection())  
  704.             {  
  705.                 iConn.Open();  
  706.                 using (IDbTransaction iTrans = iConn.BeginTransaction())  
  707.                 {  
  708.                     IDbCommand iCmd = GetCommand();  
  709.                     try  
  710.                     {  
  711.                         //循环  
  712.                         foreach (DictionaryEntry myDE in SQLStringList)  
  713.                         {  
  714.                             string cmdText = myDE.Key.ToString();  
  715.                             IDataParameter[] iParms = (IDataParameter[])myDE.Value;  
  716.                             PrepareCommand(out iCmd, iConn, iTrans, cmdText, iParms);  
  717.                             int val = iCmd.ExecuteNonQuery();  
  718.                             iCmd.Parameters.Clear();  
  719.                         }  
  720.                         iTrans.Commit();  
  721.                     }  
  722.                     catch  
  723.                     {  
  724.                         iTrans.Rollback();  
  725.                         throw;  
  726.                     }  
  727.                     finally  
  728.                     {  
  729.                         iCmd.Dispose();  
  730.                         if (iConn.State != ConnectionState.Closed)  
  731.                         {  
  732.                             iConn.Close();  
  733.                         }  
  734.                     }  
  735.                 }  
  736.             }  
  737.         }  
  738.         /// <summary>  
  739.         /// 执行一条计算查询结果语句,返回查询结果(object)。  
  740.         /// </summary>  
  741.         /// <param name="SQLString">计算查询结果语句</param>  
  742.         /// <returns>查询结果(object)</returns>  
  743.         public object GetSingle(string SQLString, params IDataParameter[] iParms)  
  744.         {  
  745.             using (IDbConnection iConn = this.GetConnection())  
  746.             {  
  747.                 IDbCommand iCmd = GetCommand();  
  748.                 {  
  749.                     try  
  750.                     {  
  751.                         PrepareCommand(out iCmd, iConn, null, SQLString, iParms);  
  752.                         object obj = iCmd.ExecuteScalar();  
  753.                         iCmd.Parameters.Clear();  
  754.                         if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
  755.                         {  
  756.                             return null;  
  757.                         }  
  758.                         else  
  759.                         {  
  760.                             return obj;  
  761.                         }  
  762.                     }  
  763.                     catch (System.Exception e)  
  764.                     {  
  765.                         throw new Exception(e.Message);  
  766.                     }  
  767.                     finally  
  768.                     {  
  769.                         iCmd.Dispose();  
  770.                         if (iConn.State != ConnectionState.Closed)  
  771.                         {  
  772.                             iConn.Close();  
  773.                         }  
  774.                     }  
  775.                 }  
  776.             }  
  777.         }  
  778.         /// <summary>  
  779.         /// 执行查询语句,返回IDataReader  
  780.         /// </summary>  
  781.         /// <param name="strSQL">查询语句</param>  
  782.         /// <returns> IDataReader </returns>  
  783.         public IDataReader ExecuteReader(string SQLString, params IDataParameter[] iParms)  
  784.         {  
  785.             IDbConnection iConn = this.GetConnection();  
  786.             {  
  787.                 IDbCommand iCmd = GetCommand();  
  788.                 {  
  789.                     try  
  790.                     {  
  791.                         PrepareCommand(out iCmd, iConn, null, SQLString, iParms);  
  792.                         System.Data.IDataReader iReader = iCmd.ExecuteReader();  
  793.                         iCmd.Parameters.Clear();  
  794.                         return iReader;  
  795.                     }  
  796.                     catch (System.Exception e)  
  797.                     {  
  798.                         throw new Exception(e.Message);  
  799.                     }  
  800.                     finally  
  801.                     {  
  802.                         iCmd.Dispose();  
  803.                         if (iConn.State != ConnectionState.Closed)  
  804.                         {  
  805.                             iConn.Close();  
  806.                         }  
  807.                     }  
  808.                 }  
  809.             }  
  810.         }  
  811.         /// <summary>  
  812.         /// 执行查询语句,返回DataSet  
  813.         /// </summary>  
  814.         /// <param name="SQLString">查询语句</param>  
  815.         /// <returns>DataSet</returns>  
  816.         public DataSet Query(string sqlString, params IDataParameter[] iParms)  
  817.         {  
  818.             using (IDbConnection iConn = this.GetConnection())  
  819.             {  
  820.                 IDbCommand iCmd = GetCommand();  
  821.                 {  
  822.                     PrepareCommand(out iCmd, iConn, null, sqlString, iParms);  
  823.                     try  
  824.                     {  
  825.                         IDataAdapter iAdapter = this.GetAdapater(sqlString, iConn);  
  826.                         DataSet ds = new DataSet();  
  827.                         iAdapter.Fill(ds);  
  828.                         iCmd.Parameters.Clear();  
  829.                         return ds;  
  830.                     }  
  831.                     catch (System.Exception ex)  
  832.                     {  
  833.                         throw new Exception(ex.Message);  
  834.                     }  
  835.                     finally  
  836.                     {  
  837.                         iCmd.Dispose();  
  838.                         if (iConn.State != ConnectionState.Closed)  
  839.                         {  
  840.                             iConn.Close();  
  841.                         }  
  842.                     }  
  843.                 }  
  844.             }  
  845.         }  
  846.         /// <summary>  
  847.         /// 初始化Command  
  848.         /// </summary>  
  849.         /// <param name="iCmd"></param>  
  850.         /// <param name="iConn"></param>  
  851.         /// <param name="iTrans"></param>  
  852.         /// <param name="cmdText"></param>  
  853.         /// <param name="iParms"></param>  
  854.         private void PrepareCommand(out IDbCommand iCmd, IDbConnection iConn, System.Data.IDbTransaction iTrans, string cmdText, IDataParameter[] iParms)  
  855.         {  
  856.             if (iConn.State != ConnectionState.Open)  
  857.                 iConn.Open();  
  858.             iCmd = this.GetCommand();  
  859.             iCmd.Connection = iConn;  
  860.             iCmd.CommandText = cmdText;  
  861.             if (iTrans != null)  
  862.                 iCmd.Transaction = iTrans;  
  863.             iCmd.CommandType = CommandType.Text;//cmdType;  
  864.             if (iParms != null)  
  865.             {  
  866.                 foreach (IDataParameter parm in iParms)  
  867.                     iCmd.Parameters.Add(parm);  
  868.             }  
  869.         }  
  870.         #endregion  
  871.         #region 存储过程操作  
  872.         /// <summary>  
  873.         /// 执行存储过程  
  874.         /// </summary>  
  875.         /// <param name="storedProcName">存储过程名</param>  
  876.         /// <param name="parameters">存储过程参数</param>  
  877.         /// <returns>SqlDataReader</returns>  
  878.         public SqlDataReader RunProcedure(string storedProcName, IDataParameter[] parameters)  
  879.         {  
  880.             IDbConnection iConn = this.GetConnection();  
  881.             {  
  882.                 iConn.Open();  
  883.   
  884.                 using (SqlCommand sqlCmd = BuildQueryCommand(iConn, storedProcName, parameters))  
  885.                 {  
  886.                     return sqlCmd.ExecuteReader(CommandBehavior.CloseConnection);  
  887.                 }  
  888.             }  
  889.         }  
  890.         /// <summary>  
  891.         /// 执行存储过程  
  892.         /// </summary>  
  893.         /// <param name="storedProcName">存储过程名</param>  
  894.         /// <param name="parameters">存储过程参数</param>  
  895.         /// <param name="tableName">DataSet结果中的表名</param>  
  896.         /// <returns>DataSet</returns>  
  897.         public DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName)  
  898.         {  
  899.             using (IDbConnection iConn = this.GetConnection())  
  900.             {  
  901.                 DataSet dataSet = new DataSet();  
  902.                 iConn.Open();  
  903.                 IDataAdapter iDA = this.GetAdapater();  
  904.                 iDA = this.GetAdapater(BuildQueryCommand(iConn, storedProcName, parameters));  
  905.                 ((SqlDataAdapter)iDA).Fill(dataSet, tableName);  
  906.                 if (iConn.State != ConnectionState.Closed)  
  907.                 {  
  908.                     iConn.Close();  
  909.                 }  
  910.                 return dataSet;  
  911.             }  
  912.         }  
  913.         /// <summary>  
  914.         /// 执行存储过程  
  915.         /// </summary>  
  916.         /// <param name="storedProcName">存储过程名</param>  
  917.         /// <param name="parameters">存储过程参数</param>  
  918.         /// <param name="tableName">DataSet结果中的表名</param>  
  919.         /// <param name="startIndex">开始记录索引</param>  
  920.         /// <param name="pageSize">页面记录大小</param>  
  921.         /// <returns>DataSet</returns>  
  922.         public DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, int startIndex, int pageSize, string tableName)  
  923.         {  
  924.             using (IDbConnection iConn = this.GetConnection())  
  925.             {  
  926.                 DataSet dataSet = new DataSet();  
  927.                 iConn.Open();  
  928.                 IDataAdapter iDA = this.GetAdapater();  
  929.                 iDA = this.GetAdapater(BuildQueryCommand(iConn, storedProcName, parameters));  
  930.   
  931.                 ((SqlDataAdapter)iDA).Fill(dataSet, startIndex, pageSize, tableName);  
  932.                 if (iConn.State != ConnectionState.Closed)  
  933.                 {  
  934.                     iConn.Close();  
  935.                 }  
  936.                 return dataSet;  
  937.             }  
  938.         }  
  939.         /// <summary>  
  940.         /// 执行存储过程 填充已经存在的DataSet数据集   
  941.         /// </summary>  
  942.         /// <param name="storeProcName">存储过程名称</param>  
  943.         /// <param name="parameters">存储过程参数</param>  
  944.         /// <param name="dataSet">要填充的数据集</param>  
  945.         /// <param name="tablename">要填充的表名</param>  
  946.         /// <returns></returns>  
  947.         public DataSet RunProcedure(string storeProcName, IDataParameter[] parameters, DataSet dataSet, string tableName)  
  948.         {  
  949.             using (IDbConnection iConn = this.GetConnection())  
  950.             {  
  951.                 iConn.Open();  
  952.                 IDataAdapter iDA = this.GetAdapater();  
  953.                 iDA = this.GetAdapater(BuildQueryCommand(iConn, storeProcName, parameters));  
  954.   
  955.                 ((SqlDataAdapter)iDA).Fill(dataSet, tableName);  
  956.   
  957.                 if (iConn.State != ConnectionState.Closed)  
  958.                 {  
  959.                     iConn.Close();  
  960.                 }  
  961.                 return dataSet;  
  962.             }  
  963.         }  
  964.         /// <summary>  
  965.         /// 执行存储过程并返回受影响的行数  
  966.         /// </summary>  
  967.         /// <param name="storedProcName"></param>  
  968.         /// <param name="parameters"></param>  
  969.         /// <returns></returns>  
  970.         public int RunProcedureNoQuery(string storedProcName, IDataParameter[] parameters)  
  971.         {  
  972.             int result = 0;  
  973.             using (IDbConnection iConn = this.GetConnection())  
  974.             {  
  975.                 iConn.Open();  
  976.                 using (SqlCommand scmd = BuildQueryCommand(iConn, storedProcName, parameters))  
  977.                 {  
  978.                     result = scmd.ExecuteNonQuery();  
  979.                 }  
  980.   
  981.                 if (iConn.State != ConnectionState.Closed)  
  982.                 {  
  983.                     iConn.Close();  
  984.                 }  
  985.             }  
  986.             return result;  
  987.         }  
  988.         public string RunProcedureExecuteScalar(string storeProcName, IDataParameter[] parameters)  
  989.         {  
  990.             string result = string.Empty;  
  991.             using (IDbConnection iConn = this.GetConnection())  
  992.             {  
  993.                 iConn.Open();  
  994.                 using (SqlCommand scmd = BuildQueryCommand(iConn, storeProcName, parameters))  
  995.                 {  
  996.                     object obj = scmd.ExecuteScalar();  
  997.                     if (obj == null)  
  998.                         result = null;  
  999.                     else  
  1000.                         result = obj.ToString();  
  1001.                 }  
  1002.                 if (iConn.State != ConnectionState.Closed)  
  1003.                 {  
  1004.                     iConn.Close();  
  1005.                 }  
  1006.             }  
  1007.             return result;  
  1008.         }  
  1009.         /// <summary>  
  1010.         /// 构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值)  
  1011.         /// </summary>  
  1012.         /// <param name="connection">数据库连接</param>  
  1013.         /// <param name="storedProcName">存储过程名</param>  
  1014.         /// <param name="parameters">存储过程参数</param>  
  1015.         /// <returns>SqlCommand</returns>  
  1016.         private SqlCommand BuildQueryCommand(IDbConnection iConn, string storedProcName, IDataParameter[] parameters)  
  1017.         {  
  1018.             IDbCommand iCmd = GetCommand(storedProcName, iConn);  
  1019.             iCmd.CommandType = CommandType.StoredProcedure;  
  1020.             if (parameters == null)  
  1021.             {  
  1022.                 return (SqlCommand)iCmd;  
  1023.             }  
  1024.             foreach (IDataParameter parameter in parameters)  
  1025.             {  
  1026.                 iCmd.Parameters.Add(parameter);  
  1027.             }  
  1028.             return (SqlCommand)iCmd;  
  1029.         }  
  1030.         /// <summary>  
  1031.         /// 执行存储过程,返回影响的行数          
  1032.         /// </summary>  
  1033.         /// <param name="storedProcName">存储过程名</param>  
  1034.         /// <param name="parameters">存储过程参数</param>  
  1035.         /// <param name="rowsAffected">影响的行数</param>  
  1036.         /// <returns></returns>  
  1037.         public int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected)  
  1038.         {  
  1039.             using (IDbConnection iConn = this.GetConnection())  
  1040.             {  
  1041.                 int result;  
  1042.                 iConn.Open();  
  1043.                 using (SqlCommand sqlCmd = BuildIntCommand(iConn, storedProcName, parameters))  
  1044.                 {  
  1045.                     rowsAffected = sqlCmd.ExecuteNonQuery();  
  1046.                     result = (int)sqlCmd.Parameters["ReturnValue"].Value;  
  1047.                     if (iConn.State != ConnectionState.Closed)  
  1048.                     {  
  1049.                         iConn.Close();  
  1050.                     }  
  1051.                     return result;  
  1052.                 }  
  1053.             }  
  1054.         }  
  1055.         /// <summary>  
  1056.         /// 创建 SqlCommand 对象实例(用来返回一个整数值)      
  1057.         /// </summary>  
  1058.         /// <param name="storedProcName">存储过程名</param>  
  1059.         /// <param name="parameters">存储过程参数</param>  
  1060.         /// <returns>SqlCommand 对象实例</returns>  
  1061.         private SqlCommand BuildIntCommand(IDbConnection iConn, string storedProcName, IDataParameter[] parameters)  
  1062.         {  
  1063.             SqlCommand sqlCmd = BuildQueryCommand(iConn, storedProcName, parameters);  
  1064.             sqlCmd.Parameters.Add(new SqlParameter("ReturnValue",  
  1065.                 SqlDbType.Int, 4, ParameterDirection.ReturnValue,  
  1066.                 false, 0, 0, string.Empty, DataRowVersion.Default, null));  
  1067.             return sqlCmd;  
  1068.         }  
  1069.         #endregion  
  1070.     }  
  1071. }</pre>  
  1072. <pre></pre>  
  1073. 小注:  
  1074. <pre></pre>  
  1075. <pre></pre>  
  1076. </pre></div>  
  1077. <div><span style="white-space:pre"></span>这个类封装成dll后,相关数据库连接可在,引用该dll项目的app.config文件中写,如果是web程序,这需要修改代码,将构造函数中获取app.config的信息换成获取web.config的信息。</div>  
  1078. <div><a target="_blank" href="http://blog.csdn.net/jiankunking/article/details/17992823">C#使用vs2010封装DLL</a><br>  
  1079. </div>  
  1080. <pre></pre>  
  1081. <pre></pre>  
  1082. <pre></pre>  
  1083. <pre></pre>  
  1084. <div></div>  
  1085. <pre></pre>  
  1086. <pre></pre>  
  1087. <div></div>  
  1088. <pre></pre>  
  1089. <pre></pre>  
  1090. <div></div>  
  1091.      
  1092. </pre>  
转载网址:http://blog.csdn.net/jiankunking/article/details/17992817
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# .NET万能数据库访问封装类(ACCESS、SQLServer、Oracle) 的相关文章

随机推荐

  • java如何查询并显示一个表,如何从表中获取数据并将其显示在Java的另一个表中?...

    将数据从一个表复制到另一个表的Netbean项目 希望这可以帮助 import javax swing table DefaultTableModel To change this license header choose License
  • 概率论【离散型二维变量与连续性二维变量(下)】--猴博士爱讲课

    6 连续型二维变量 下 1 7 求边缘分布函数 边缘概率密度 边缘概率密度 2 7 求边缘密度函数 边缘概率密度 3 7 判断连续型二维变量的独立性 F x y Fx X Fy Y 那么X Y互相独立 f x y fx X fy Y 那么X
  • 【论文阅读 08】Adaptive Anomaly Detection within Near-regular Milling Textures

    2013年 太老了 先不看 比较老的一篇论文 近规则铣削纹理中的自适应异常检测 1 Abstract 在钢质量控制中的应用 我们提出了图像处理算法 用于无监督地检测隐藏在全局铣削模式内的异常 因此 我们考虑了基于全局傅里叶的方法和局部剪切波
  • php判断2个多维数组是否相同,PHP如何判断一个数组是一维还是多维

    什么叫多维数组呢 多维数组 本质上是以数组作为数组元素的数组 二维数组又称为矩阵 一个数组的元素如果是一维数组 那么我们就称这个数组是二维数组 怎么判断一个数组是否是一维数组呢 通过count 函数 int count mixed var
  • 【FPGA】:频率测量

    转载 1 FPGA频率测量的三种方法 直接测量法 间接测量法 等精度测量法
  • Go中sync 包的 Once 使用

    文章目录 背景 One 简介 示例 注意 源码解读 背景 在系统初始化的时候 某些代码只想被执行一次 这时应该怎么做呢 没有学习 Once 前 大家可能想到 声明一个标识 表示是否初始化过 然后初始化这个标识加锁 更新这个标识 但是学会了
  • .net IOC之Spring.Net

    一 开发环境 编译器 VS2013 Net版本 net framework4 5 二 涉及程序集 Spring Core dll 1 3 Common Logging 三 开发过程 1 项目结构 2 添加Person cs namespac
  • 数码管电子时钟

    文章目录 前言 一 回顾数码管 二 任务描述 三 系统框图 四 模块调用 五 模块原理图 六 工程源码 6 2 时钟计数模块代码 6 2 数码管驱动模块代码 6 3 顶层模块代码 七 仿真测试 7 1 测试代码 7 2 仿真结果 八 管脚信
  • networkmanager无法打开

    中午登录ubuntu刚要连接无可线发现个的问题 无线的图标不见了 这可肿么办啊 怎么找都找不到 开始想系统还原 后来发现还挺麻烦的 毕竟菜鸟 系统方面的还不怎么懂 幸好有两台电脑 可以google 唉 最近两天google也不正常 今天也不
  • Llama 美洲鸵(大羊驼)改进之一:均方层归一化RMSNorm

    Layer Normalization LayerNorm Root Mean Square Layer Normalization RMSNorm 原理 对特征张量按照某一维度或某几个维度进行0均值 1方差的归一化 操作 LayerNor
  • 神经网络控制系统的特点,神经网络控制的优点

    什么是神经网络控制 神经网络控制技术是一项复杂的系统控制技术 一般应用在变频器的控制中 它是通过对系统的辨识 运算后对变频器进行控制的一种新技术 而且神经网络控制可以同时控制多个变频器 所以应用在多个变频器级联控制中比较合适 谷歌人工智能写
  • angularjs官方教程中的两处错误

    看到官方教程中HTTP小节之前还在向同事夸angularjs的教程做的厚道 没有什么坑 结果到http就出现了 发现了两处错误 度娘各种搜索没有发现相关的帖子 于是记录下来 希望能被高效收录 以解广大IT民工之困扰 getHero id n
  • stream流常用

    从一个List中获得每个object的对象的id组成一个list List
  • 卓越性能代码_「Win」被隐藏起来的卓越性能模式,为何不想让人发现?

    前言 众所周知 电脑电源管理中包含三大模式 分别是 节能模式 平衡模式 高性能模式 其对电脑的性能影响还是比较大的 但是今天所说的 卓越性能模式 应该很多人都没听说过 又是何方神圣 其为何要隐藏起来不想被人发现 如何开启 卓越性能 模式 右
  • LLaMA微调记录

    本文基于开源代码https github com Lightning AI lit llama tree main执行微调 其他参考链接 Accelerating LLaMA with Fabric A Comprehensive Guid
  • 实验二:使用KMP算法实现字符串的匹配

    1 实验目的 熟练的掌握数据结构中串这种数据类型 学会使用相较于朴素的模式识别算法更加先进的KMP算法进行识别和匹配 同时 在数据结构试验之中熟悉和了解串的性质和使用方法 2 实验要求 输入 通过命令行参数输入原字符串和模式字符串 输出 1
  • 全排列问题

    问题描述 给定一个由不同的小写字母组成的字符串 输出这个字符串的所有全排列 我们假设对于小写字母有 a lt b lt lt y lt z 而且给定的字符串中的字母已经按照从小到大的顺序排列 输入 输入只有一行 是一个由不同的小写字母组成的
  • 超详细Vue Devtools的下载和安装——Vue的调试工具

    在使用 Vue 时 我们推荐在浏览器上安装 Vue Devtools Vue Devtools 是 Vue 官方发布的调试浏览器插件 可以安装在 Chrome 和 Firefox 等浏览器上 直接内嵌在开发者工具中 使用体验流畅 Vue D
  • 哪些行业是离散制造?哪些是流程制造?他们有什么区别?

    一 离散制造业 定义 产品往往由多个零件经过一系列并不连续的工序的加工最终装配而成 典型的离散制造行业主要包括机械制造 电子电器 航空制造 汽车制造等行业 大批量生产 如 汽车 多品种小批次 如 航空 95 企业属于多品种小批次 客户需求多
  • C# .NET万能数据库访问封装类(ACCESS、SQLServer、Oracle)

    在app config文件中写上数据库中连接信息