if (command == null) throw new ArgumentNullException("command"); if (commandparameters!= null) foreach (SqlParameter p in commandparameters) if (p!= n
|
|
|
- 交 黄
- 7 years ago
- Views:
Transcription
1 微软 SqlHelper 类中文注释和使用方法整理 : 飞晏博客 ; 网址 : 和微软发布的 SqlHelper.cs 不同, 为了方便我把里面的 SqlHelperParameterCatch.cs 单独 列出来了 此外还有 OledbHelper.cs OdbcHelper.cs 和 XMLHelper.cs 可供使用 SQLHelper.cs 文件源代码和注释 : using System; using System.Collections.Generic; using System.Web; using System.Data; using System.Data.SqlClient; using System.Xml; using System.Collections; using System.Configuration; ///SqlHelper 的摘要说明 public sealed class SqlHelper public SqlHelper() // //TODO: 在此处添加构造函数逻辑 // public static readonly string connectionstring = System.Configuration.ConfigurationManager.ConnectionStrings["testConnectionString"].ConnectionString; #region 私有构造函数和方法 /// 将 SqlParameters 参数数组 ( 参数值 ) 分配给 SqlCommand 命令 /// 这个方法将给任何一个参数分配 DBNull.Value /// 该操作将阻止默认值的使用 ( 大爷的, 没看懂 ) /// <param name="command"> 要分配 SqlParameters 参数的 SqlCommand 命令 </param> /// <param name="commandparameters">sqlparameters 参数数组 </param> private static void AttachParameters(SqlCommand command, SqlParameter[] commandparameters)
2 if (command == null) throw new ArgumentNullException("command"); if (commandparameters!= null) foreach (SqlParameter p in commandparameters) if (p!= null) // Check for derived output value with no value assigned if ((p.direction == ParameterDirection.InputOutput p.direction == ParameterDirection.Input) && (p.value == null)) p.value = DBNull.Value; command.parameters.add(p); /// 将 DataRow 类型的列值分配到 SqlParameter 参数数组 /// <param name="commandparameters"> 要分配的 SqlParameter 参数数组 </param> /// <param name="datarow"> 将要分配给存储过程参数的 DataRow</param> private static void AssignParameterValues(SqlParameter[] commandparameters, DataRow datarow) if ((commandparameters == null) (datarow == null)) // 没有接收到数据就返回 return; int i = 0; // 设置参数值 foreach (SqlParameter commandparameter in commandparameters) // 检查参数名称, 如果不存在, 抛出一个异常 if (commandparameter.parametername == null commandparameter.parametername.length <= 1) throw new Exception( string.format( " 请提供参数 0, 一个有效的名称 1.", i, commandparameter.parametername));
3 // 从 DataRow 的表中获取为参数数组中数组名称的列的索引. // 如果存在和参数名称相同的列, 则将列值赋给当前名称的参数. if (datarow.table.columns.indexof(commandparameter.parametername.substring(1))!= -1) commandparameter.value = datarow[commandparameter.parametername.substring(1)]; i++; /// 将一个对象数组分配给 SqlParameter 参数数组.( 重载方法 ) /// <param name="commandparameters"> 要分配的 SqlParameter 参数数组 </param> /// <param name="parametervalues"> 将要分配给存储过程参数的对象数组 </param> private static void AssignParameterValues(SqlParameter[] commandparameters, object[] parametervalues) if ((commandparameters == null) (parametervalues == null)) return; // 确保对象数组个数与参数个数匹配, 如果不匹配, 抛出一个异常 if (commandparameters.length!= parametervalues.length) throw new ArgumentException(" 参数值个数与参数不匹配."); // 给参数赋值 for (int i = 0, j = commandparameters.length; i < j; i++) if (parametervalues[i] is IDbDataParameter) IDbDataParameter paraminstance = (IDbDataParameter)parameterValues[i]; if (paraminstance.value == null) commandparameters[i].value = DBNull.Value; commandparameters[i].value = paraminstance.value;
4 if (parametervalues[i] == null) commandparameters[i].value = DBNull.Value; commandparameters[i].value = parametervalues[i]; /// 预处理用户提供的命令, 数据库连接 / 事务 / 命令类型 / 参数 /// <param name="command"> 要处理的 SqlCommand</param> /// <param name="connection"> 有效的数据库连接 </param> /// <param name="transaction"> 一个有效的事务或者是 null 值 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本, 其它.)</param> /// <param name="commandtext"> 存储过程名或都 T-SQL 命令文本 </param> /// <param name="commandparameters"> 和命令相关联的 SqlParameter 参数数组, 如果没有参数为 'null'</param> /// <param name="mustcloseconnection"><c>true</c> 如果连接是打开的, 则为 true, 其它情况下为 false.</param> private static void PrepareCommand(SqlCommand command, SqlConnection connection, SqlTransaction transaction, CommandType commandtype, string commandtext, SqlParameter[] commandparameters, out bool mustcloseconnection) if (command == null) throw new ArgumentNullException("command"); if (commandtext == null commandtext.length == 0) throw new ArgumentNullException("commandText"); if (connection.state!= ConnectionState.Open) mustcloseconnection = true; connection.open(); mustcloseconnection = false; command.commandtimeout = 1000 * 60 * 60; // 60 分钟 // 给命令分配一个数据库连接.
5 command.connection = connection; // 设置命令文本 ( 存储过程名或 SQL 语句 ) command.commandtext = commandtext; // 分配事务 if (transaction!= null) if (transaction.connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); command.transaction = transaction; // 设置命令类型. command.commandtype = commandtype; // 分配命令参数 if (commandparameters!= null) AttachParameters(command, commandparameters); return; #endregion 私有构造函数和方法结束 #region ExecuteNonQuery 命令 /// 执行指定连接字符串, 类型的 SqlCommand. /// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders"); /// <param name="connectionstring"> 一个有效的数据库连接字符串 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本, 其它.)</param> /// <param name="commandtext"> 存储过程名称或 SQL 语句 </param> /// <returns> 返回命令影响的行数 </returns> public static int ExecuteNonQuery(string connectionstring, CommandType commandtype, string commandtext) // ExecuteNonQuery #1
6 return ExecuteNonQuery(connectionString, commandtype, commandtext, (SqlParameter[])null); /// 执行指定连接字符串, 类型的 SqlCommand. 如果没有提供参数, 不返回结果 /// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); /// <param name="connectionstring"> 一个有效的数据库连接字符串 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本, 其它.)</param> /// <param name="commandtext"> 存储过程名称或 SQL 语句 </param> /// <param name="commandparameters">sqlparameter 参数数组 </param> /// <returns> 返回命令影响的行数 </returns> public static int ExecuteNonQuery(string connectionstring, CommandType commandtype, string commandtext, params SqlParameter[] commandparameters) // ExecuteNonQuery #2 if (connectionstring == null connectionstring.length == 0) throw new ArgumentNullException("connectionString"); using (SqlConnection connection = new SqlConnection(connectionString)) connection.open(); return ExecuteNonQuery(connection, commandtype, commandtext, commandparameters); /// 执行指定连接字符串的存储过程, 将对象数组的值赋给存储过程参数. /// 此方法需要在参数缓存方法中探索参数并生成参数. /// 这个方法没有提供访问输出参数和返回值. /// int result = ExecuteNonQuery(connString, "PublishOrders", 24, 36); /// <param name="connectionstring"> 一个有效的数据库连接字符串 </param> /// <param name="spname"> 存储过程名称 </param> /// <param name="parametervalues"> 分配到存储过程输入参数的对象数组 </param> /// <returns> 返回受影响的行数 </returns> public static int ExecuteNonQuery(string connectionstring, string spname, params object[]
7 parametervalues) // ExecuteNonQuery #3 if (connectionstring == null connectionstring.length == 0) throw new ArgumentNullException("connectionString"); // 如果存在参数值, 我们要搞清楚他们去哪里 if ((parametervalues!= null) && (parametervalues.length > 0)) // 从探索存储过程参数 ( 加载到缓存 ) 并分配给存储过程参数数组. SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(connectionString, spname); // 给存储过程参数赋值 AssignParameterValues(commandParameters, parametervalues); return ExecuteNonQuery(connectionString, CommandType.StoredProcedure, spname, commandparameters); // 没有参数情况下 return ExecuteNonQuery(connectionString, CommandType.StoredProcedure, spname); /// 执行指定数据库连接对象的命令. /// int result = ExecuteNonQuery(conn, CommandType.StoredProcedure, "PublishOrders"); /// <param name="connection"> 一个有效的数据库连接对象 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它.)</param> /// <param name="commandtext"> 存储过程名称或 T-SQL 语句 </param> /// <returns> 返回影响的行数 </returns> public static int ExecuteNonQuery(SqlConnection connection, CommandType commandtype, string commandtext) // ExecuteNonQuery #4 return ExecuteNonQuery(connection, commandtype, commandtext, (SqlParameter[])null);
8 /// 执行指定数据库连接对象的命令 /// int result = ExecuteNonQuery(conn, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); /// <param name="connection"> 一个有效的数据库连接对象 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它.)</param> /// <param name="commandtext">t 存储过程名称或 T-SQL 语句 </param> /// <param name="commandparameters">sqlparamter 参数数组 </param> /// <returns> 返回影响的行数 </returns> public static int ExecuteNonQuery(SqlConnection connection, CommandType commandtype, string commandtext, params SqlParameter[] commandparameters) // ExecuteNonQuery #5 if (connection == null) throw new ArgumentNullException("connection"); SqlCommand cmd = new SqlCommand(); bool mustcloseconnection = false; PrepareCommand(cmd, connection, (SqlTransaction)null, commandtype, commandtext, commandparameters, out mustcloseconnection); int retval = cmd.executenonquery(); cmd.parameters.clear(); if (mustcloseconnection) connection.close(); return retval; /// 执行指定数据库连接对象的命令, 将对象数组的值赋给存储过程参数. /// 此方法不提供访问存储过程输出参数和返回值 /// int result = ExecuteNonQuery(conn, "PublishOrders", 24, 36); /// <param name="connection"> 一个有效的数据库连接对象 </param> /// <param name="spname"> 存储过程名 </param> /// <param name="parametervalues"> 分配给存储过程输入参数的对象数组 </param>
9 /// <returns> 返回影响的行数 </returns> public static int ExecuteNonQuery(SqlConnection connection, string spname, params object[] parametervalues) // ExecuteNonQuery #6 if (connection == null) throw new ArgumentNullException("connection"); // 如果有参数值 if ((parametervalues!= null) && (parametervalues.length > 0)) // 从缓存中加载存储过程参数 SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(connection, spname); // 给存储过程分配参数值 AssignParameterValues(commandParameters, parametervalues); return ExecuteNonQuery(connection, CommandType.StoredProcedure, spname, commandparameters); return ExecuteNonQuery(connection, CommandType.StoredProcedure, spname); /// 执行带事务的 SqlCommand. /// int result = ExecuteNonQuery(trans, CommandType.StoredProcedure, "PublishOrders"); /// <param name="transaction"> 一个有效的事物 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它.)</param> /// <param name="commandtext"> 存储过程名称或 T-SQL 语句 </param> /// <returns> 返回影响的行数 </returns> public static int ExecuteNonQuery(SqlTransaction transaction, CommandType commandtype, string commandtext) // ExecuteNonQuery #7 return ExecuteNonQuery(transaction, commandtype, commandtext, (SqlParameter[])null);
10 /// 执行带事务的 SqlCommand( 指定参数 ). /// int result = ExecuteNonQuery(trans, CommandType.StoredProcedure, "GetOrders", new SqlParameter("@prodid", 24)); /// <param name="transaction"> 一个有效的数据库事物 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它.)</param> /// <param name="commandtext"> 存储过程名称或 T-SQL 语句 </param> /// <param name="commandparameters">sqlparamter 参数数组 </param> /// <returns> 返回影响的行数 </returns> public static int ExecuteNonQuery(SqlTransaction transaction, CommandType commandtype, string commandtext, params SqlParameter[] commandparameters) // ExecuteNonQuery #8 if (transaction == null) throw new ArgumentNullException("transaction"); if (transaction!= null && transaction.connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); // 预处理 SqlCommand cmd = new SqlCommand(); bool mustcloseconnection = false; PrepareCommand(cmd, transaction.connection, transaction, commandtype, commandtext, commandparameters, out mustcloseconnection); // 执行 int retval = cmd.executenonquery(); // 清除参数集, 以便再次使用 cmd.parameters.clear(); return retval; /// 执行带事务的 SqlCommand( 指定参数值 ). /// 此方法不提供访问存储过程输出参数和返回值 /// int result = ExecuteNonQuery(conn, trans, "PublishOrders", 24, 36);
11 /// <param name="transaction"> 一个有效的数据库连接对象 </param> /// <param name="spname"> 存储过程名 </param> /// <param name="parametervalues"> 分配给存储过程输入参数的对象数组 </param> /// <returns> 返回受影响的行数 </returns> public static int ExecuteNonQuery(SqlTransaction transaction, string spname, params object[] parametervalues) // ExecuteNonQuery #9 if (transaction == null) throw new ArgumentNullException("transaction"); if (transaction!= null && transaction.connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); // 如果有参数值 if ((parametervalues!= null) && (parametervalues.length > 0)) // 从缓存中加载存储过程参数, 如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(transaction.Connection, spname); // 给存储过程参数赋值 AssignParameterValues(commandParameters, parametervalues); // 调用重载方法 return ExecuteNonQuery(transaction, CommandType.StoredProcedure, spname, commandparameters); // 没有参数值 return ExecuteNonQuery(transaction, CommandType.StoredProcedure, spname); #endregion ExecuteNonQuery 命令 #region ExecuteDataset 方法 /// 执行指定数据库连接字符串的命令, 返回 DataSet.
12 /// DataSet ds = ExecuteDataset(connString, CommandType.StoredProcedure, "GetOrders"); /// <param name="connectionstring"> 一个有效的数据库连接字符串 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名称或 T-SQL 语句 </param> /// <returns> 返回一个包含结果集的 DataSet</returns> public static DataSet ExecuteDataset(string connectionstring, CommandType commandtype, string commandtext) // ExecuteDataset #1 return ExecuteDataset(connectionString, commandtype, commandtext, (SqlParameter[])null); /// 执行指定数据库连接字符串的命令, 返回 DataSet. /// DataSet ds = ExecuteDataset(connString, CommandType.StoredProcedure, "GetOrders", new SqlParameter("@prodid", 24)); /// <param name="connectionstring"> 一个有效的数据库连接字符串 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名称或 T-SQL 语句 </param> /// <param name="commandparameters">sqlparamters 参数数组 </param> /// <returns> 返回一个包含结果集的 DataSet</returns> public static DataSet ExecuteDataset(string connectionstring, CommandType commandtype, string commandtext, params SqlParameter[] commandparameters) // ExecuteDataset #2 if (connectionstring == null connectionstring.length == 0) throw new ArgumentNullException("connectionString"); using (SqlConnection connection = new SqlConnection(connectionString)) connection.open(); return ExecuteDataset(connection, commandtype, commandtext, commandparameters); /// 执行指定数据库连接字符串的命令, 直接提供参数值, 返回 DataSet.
13 /// 此方法不提供访问存储过程输出参数和返回值. /// DataSet ds = ExecuteDataset(connString, "GetOrders", 24, 36); /// <param name="connectionstring"> 一个有效的数据库连接字符串 </param> /// <param name="spname"> 存储过程名 </param> /// <param name="parametervalues"> 分配给存储过程输入参数的对象数组 </param> /// <returns> 返回一个包含结果集的 DataSet</returns> public static DataSet ExecuteDataset(string connectionstring, string spname, params object[] parametervalues) // ExecuteDataset #3 if (connectionstring == null connectionstring.length == 0) throw new ArgumentNullException("connectionString"); if ((parametervalues!= null) && (parametervalues.length > 0)) // 从缓存中检索存储过程参数 SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(connectionString, spname); // 给存储过程参数分配值 AssignParameterValues(commandParameters, parametervalues); return ExecuteDataset(connectionString, CommandType.StoredProcedure, spname, commandparameters); return ExecuteDataset(connectionString, CommandType.StoredProcedure, spname); /// 执行指定数据库连接对象的命令, 返回 DataSet. /// DataSet ds = ExecuteDataset(conn, CommandType.StoredProcedure, "GetOrders"); /// <param name="connection"> 一个有效的数据库连接对象 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名或 T-SQL 语句 </param>
14 /// <returns> 返回一个包含结果集的 DataSet</returns> public static DataSet ExecuteDataset(SqlConnection connection, CommandType commandtype, string commandtext) // ExecuteDataset #4 return ExecuteDataset(connection, commandtype, commandtext, (SqlParameter[])null); /// 执行指定数据库连接对象的命令, 指定存储过程参数, 返回 DataSet. /// DataSet ds = ExecuteDataset(conn, CommandType.StoredProcedure, "GetOrders", new SqlParameter("@prodid", 24)); /// <param name="connection"> 一个有效的数据库连接对象 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名或 T-SQL 语句 </param> /// <param name="commandparameters">sqlparamter 参数数组 </param> /// <returns> 返回一个包含结果集的 DataSet</returns> public static DataSet ExecuteDataset(SqlConnection connection, CommandType commandtype, string commandtext, params SqlParameter[] commandparameters) // ExecuteDataset #5 if (connection == null) throw new ArgumentNullException("connection"); // 预处理 SqlCommand cmd = new SqlCommand(); bool mustcloseconnection = false; PrepareCommand(cmd, connection, (SqlTransaction)null, commandtype, commandtext, commandparameters, out mustcloseconnection); // 创建 SqlDataAdapter 和 DataSet. using (SqlDataAdapter da = new SqlDataAdapter(cmd)) DataSet ds = new DataSet(); // 填充 DataSet. da.fill(ds); cmd.parameters.clear(); if (mustcloseconnection) connection.close(); return ds;
15 /// 执行指定数据库连接对象的命令, 指定参数值, 返回 DataSet. /// 此方法不提供访问存储过程输入参数和返回值. /// 示例.: /// DataSet ds = ExecuteDataset(conn, "GetOrders", 24, 36); /// <param name="connection"> 一个有效的数据库连接对象 </param> /// <param name="spname"> 存储过程名 </param> /// <param name="parametervalues"> 分配给存储过程输入参数的对象数组 </param> /// <returns> 返回一个包含结果集的 DataSet</returns> public static DataSet ExecuteDataset(SqlConnection connection, string spname, params object[] parametervalues) // ExecuteDataset #6 if (connection == null) throw new ArgumentNullException("connection"); if ((parametervalues!= null) && (parametervalues.length > 0)) // 比缓存中加载存储过程参数 SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(connection, spname); // 给存储过程参数分配值 AssignParameterValues(commandParameters, parametervalues); return ExecuteDataset(connection, CommandType.StoredProcedure, spname, commandparameters); return ExecuteDataset(connection, CommandType.StoredProcedure, spname); /// 执行指定事务的命令, 返回 DataSet. /// DataSet ds = ExecuteDataset(trans, CommandType.StoredProcedure, "GetOrders"); /// <param name="transaction"> 事务 </param>
16 /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名或 T-SQL 语句 </param> /// <returns> 返回一个包含结果集的 DataSet</returns> public static DataSet ExecuteDataset(SqlTransaction transaction, CommandType commandtype, string commandtext) // ExecuteDataset #7 return ExecuteDataset(transaction, commandtype, commandtext, (SqlParameter[])null); /// 执行指定事务的命令, 指定参数, 返回 DataSet. /// DataSet ds = ExecuteDataset(trans, CommandType.StoredProcedure, "GetOrders", new SqlParameter("@prodid", 24)); /// <param name="transaction"> 事务 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名或 T-SQL 语句 </param> /// <param name="commandparameters">sqlparamter 参数数组 </param> /// <returns> 返回一个包含结果集的 DataSet</returns> public static DataSet ExecuteDataset(SqlTransaction transaction, CommandType commandtype, string commandtext, params SqlParameter[] commandparameters) // ExecuteDataset #8 if (transaction == null) throw new ArgumentNullException("transaction"); if (transaction!= null && transaction.connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); // 预处理 SqlCommand cmd = new SqlCommand(); bool mustcloseconnection = false; PrepareCommand(cmd, transaction.connection, transaction, commandtype, commandtext, commandparameters, out mustcloseconnection); // 创建 DataAdapter & DataSet using (SqlDataAdapter da = new SqlDataAdapter(cmd)) DataSet ds = new DataSet(); da.fill(ds); cmd.parameters.clear(); return ds;
17 /// 执行指定事务的命令, 指定参数值, 返回 DataSet. /// 此方法不提供访问存储过程输入参数和返回值. /// 示例.: /// DataSet ds = ExecuteDataset(trans, "GetOrders", 24, 36); /// <param name="transaction"> 事务 </param> /// <param name="spname"> 存储过程名 </param> /// <param name="parametervalues"> 分配给存储过程输入参数的对象数组 </param> /// <returns> 返回一个包含结果集的 DataSet</returns> public static DataSet ExecuteDataset(SqlTransaction transaction, string spname, params object[] parametervalues) // ExecuteDataset #9 if (transaction == null) throw new ArgumentNullException("transaction"); if (transaction!= null && transaction.connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); if ((parametervalues!= null) && (parametervalues.length > 0)) // 从缓存中加载存储过程参数 SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(transaction.Connection, spname); // 给存储过程参数分配值 AssignParameterValues(commandParameters, parametervalues); return ExecuteDataset(transaction, CommandType.StoredProcedure, spname, commandparameters); return ExecuteDataset(transaction, CommandType.StoredProcedure, spname); #endregion ExecuteDataset 方法 #region ExecuteReader 数据阅读器
18 /// 枚举, 标识数据库连接是由 SqlHelper 提供还是由调用者提供 private enum SqlConnectionOwnership 由 SqlHelper 提供连接 </summary> Internal, 由调用者提供连接 </summary> External /// 执行指定数据库连接对象的数据阅读器. /// 如果是 SqlHelper 打开连接, 当连接关闭 DataReader 也将关闭. /// 如果是调用都打开连接,DataReader 由调用都管理. /// <param name="connection"> 一个有效的数据库连接对象 </param> /// <param name="transaction"> 一个有效的事务, 或者为 'null'</param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名或 T-SQL 语句 </param> /// <param name="commandparameters">sqlparameters 参数数组, 如果没有参数则为 'null'</param> /// <param name="connectionownership"> 标识数据库连接对象是由调用者提供还是由 SqlHelper 提供 </param> /// <returns> 返回包含结果集的 SqlDataReader</returns> private static SqlDataReader ExecuteReader(SqlConnection connection, SqlTransaction transaction, CommandType commandtype, string commandtext, SqlParameter[] commandparameters, SqlConnectionOwnership connectionownership) // ExecuteReader #1 if (connection == null) throw new ArgumentNullException("connection"); bool mustcloseconnection = false; // 创建命令 SqlCommand cmd = new SqlCommand(); try PrepareCommand(cmd, connection, transaction, commandtype, commandtext, commandparameters, out mustcloseconnection); // 创建数据阅读器 SqlDataReader datareader; if (connectionownership == SqlConnectionOwnership.External) datareader = cmd.executereader();
19 datareader = cmd.executereader(commandbehavior.closeconnection); // 清除参数, 以便再次使用.. // HACK: There is a problem here, the output parameter values are fletched // when the reader is closed, so if the parameters are detached from the command // then the SqlReader can 磘 set its values. // When this happen, the parameters can 磘 be used again in other command. bool canclear = true; foreach (SqlParameter commandparameter in cmd.parameters) if (commandparameter.direction!= ParameterDirection.Input) canclear = false; if (canclear) cmd.parameters.clear(); return datareader; catch if (mustcloseconnection) connection.close(); throw; /// 执行指定数据库连接字符串的数据阅读器. /// SqlDataReader dr = ExecuteReader(connString, CommandType.StoredProcedure, "GetOrders"); /// <param name="connectionstring"> 一个有效的数据库连接字符串 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名或 T-SQL 语句 </param> /// <returns> 返回包含结果集的 SqlDataReader</returns> public static SqlDataReader ExecuteReader(string connectionstring, CommandType commandtype,
20 string commandtext) // ExecuteReader #2 return ExecuteReader(connectionString, commandtype, commandtext, (SqlParameter[])null); /// 执行指定数据库连接字符串的数据阅读器, 指定参数. /// SqlDataReader dr = ExecuteReader(connString, CommandType.StoredProcedure, "GetOrders", new SqlParameter("@prodid", 24)); /// <param name="connectionstring"> 一个有效的数据库连接字符串 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名或 T-SQL 语句 </param> /// <param name="commandparameters">sqlparamter 参数数组 (new SqlParameter("@prodid", 24))</param> /// <returns> 返回包含结果集的 SqlDataReader</returns> public static SqlDataReader ExecuteReader(string connectionstring, CommandType commandtype, string commandtext, params SqlParameter[] commandparameters) // ExecuteReader #3 if (connectionstring == null connectionstring.length == 0) throw new ArgumentNullException("connectionString"); SqlConnection connection = null; try connection = new SqlConnection(connectionString); connection.open(); return ExecuteReader(connection, null, commandtype, commandtext, commandparameters, SqlConnectionOwnership.Internal); catch if (connection!= null) connection.close(); throw; /// 执行指定数据库连接字符串的数据阅读器, 指定参数值.
21 /// 此方法不提供访问存储过程输出参数和返回值参数. /// SqlDataReader dr = ExecuteReader(connString, "GetOrders", 24, 36); /// <param name="connectionstring"> 一个有效的数据库连接字符串 </param> /// <param name="spname"> 存储过程名 </param> /// <param name="parametervalues"> 分配给存储过程输入参数的对象数组 </param> /// <returns> 返回包含结果集的 SqlDataReader</returns> public static SqlDataReader ExecuteReader(string connectionstring, string spname, params object[] parametervalues) // ExecuteReader #4 if (connectionstring == null connectionstring.length == 0) throw new ArgumentNullException("connectionString"); if ((parametervalues!= null) && (parametervalues.length > 0)) SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(connectionString, spname); AssignParameterValues(commandParameters, parametervalues); return ExecuteReader(connectionString, CommandType.StoredProcedure, spname, commandparameters); return ExecuteReader(connectionString, CommandType.StoredProcedure, spname); /// 执行指定数据库连接对象的数据阅读器. /// SqlDataReader dr = ExecuteReader(conn, CommandType.StoredProcedure, "GetOrders"); /// <param name="connection"> 一个有效的数据库连接对象 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名或 T-SQL 语句 </param> /// <returns> 返回包含结果集的 SqlDataReader</returns> public static SqlDataReader ExecuteReader(SqlConnection connection, CommandType commandtype, string commandtext)
22 // ExecuteReader #5 return ExecuteReader(connection, commandtype, commandtext, (SqlParameter[])null); /// [ 调用者方式 ] 执行指定数据库连接对象的数据阅读器, 指定参数. /// SqlDataReader dr = ExecuteReader(conn, CommandType.StoredProcedure, "GetOrders", new SqlParameter("@prodid", 24)); /// <param name="connection"> 一个有效的数据库连接对象 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名或 T-SQL 语句 </param> /// <param name="commandparameters">sqlparamter 参数数组 </param> /// <returns> 返回包含结果集的 SqlDataReader</returns> public static SqlDataReader ExecuteReader(SqlConnection connection, CommandType commandtype, string commandtext, params SqlParameter[] commandparameters) // ExecuteReader #6 return ExecuteReader(connection, (SqlTransaction)null, commandtype, commandtext, commandparameters, SqlConnectionOwnership.External); /// [ 调用者方式 ] 执行指定数据库连接对象的数据阅读器, 指定参数值. /// 此方法不提供访问存储过程输出参数和返回值参数. /// SqlDataReader dr = ExecuteReader(conn, "GetOrders", 24, 36); /// <param name="connection"> 一个有效的数据库连接对象 </param> /// <param name="spname">t 存储过程名 </param> /// <param name="parametervalues"> 分配给存储过程输入参数的对象数组 </param> /// <returns> 返回包含结果集的 SqlDataReader</returns> public static SqlDataReader ExecuteReader(SqlConnection connection, string spname, params object[] parametervalues) // ExecuteReader #7 if (connection == null) throw new ArgumentNullException("connection"); if ((parametervalues!= null) && (parametervalues.length > 0))
23 SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(connection, spname); AssignParameterValues(commandParameters, parametervalues); return ExecuteReader(connection, CommandType.StoredProcedure, spname, commandparameters); return ExecuteReader(connection, CommandType.StoredProcedure, spname); /// [ 调用者方式 ] 执行指定数据库事务的数据阅读器, 指定参数值. /// SqlDataReader dr = ExecuteReader(trans, CommandType.StoredProcedure, "GetOrders"); /// <param name="transaction"> 一个有效的连接事务 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名称或 T-SQL 语句 </param> /// <returns> 返回包含结果集的 SqlDataReader</returns> public static SqlDataReader ExecuteReader(SqlTransaction transaction, CommandType commandtype, string commandtext) // ExecuteReader #8 return ExecuteReader(transaction, commandtype, commandtext, (SqlParameter[])null); /// [ 调用者方式 ] 执行指定数据库事务的数据阅读器, 指定参数. /// SqlDataReader dr = ExecuteReader(trans, CommandType.StoredProcedure, "GetOrders", new SqlParameter("@prodid", 24)); /// <param name="transaction"> 一个有效的连接事务 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名称或 T-SQL 语句 </param> /// <param name="commandparameters"> 分配给命令的 SqlParamter 参数数组 </param> /// <returns> 返回包含结果集的 SqlDataReader</returns>
24 public static SqlDataReader ExecuteReader(SqlTransaction transaction, CommandType commandtype, string commandtext, params SqlParameter[] commandparameters) // ExecuteReader #9 if (transaction == null) throw new ArgumentNullException("transaction"); if (transaction!= null && transaction.connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); return ExecuteReader(transaction.Connection, transaction, commandtype, commandtext, commandparameters, SqlConnectionOwnership.External); /// [ 调用者方式 ] 执行指定数据库事务的数据阅读器, 指定参数值. /// 此方法不提供访问存储过程输出参数和返回值参数. /// SqlDataReader dr = ExecuteReader(trans, "GetOrders", 24, 36); /// <param name="transaction"> 一个有效的连接事务 </param> /// <param name="spname"> 存储过程名称 </param> /// <param name="parametervalues"> 分配给存储过程输入参数的对象数组 </param> /// <returns> 返回包含结果集的 SqlDataReader</returns> public static SqlDataReader ExecuteReader(SqlTransaction transaction, string spname, params object[] parametervalues) // ExecuteReader #10 if (transaction == null) throw new ArgumentNullException("transaction"); if (transaction!= null && transaction.connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); // 如果有参数值 if ((parametervalues!= null) && (parametervalues.length > 0)) SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(transaction.Connection, spname); AssignParameterValues(commandParameters, parametervalues); return ExecuteReader(transaction, CommandType.StoredProcedure, spname, commandparameters); // 没有参数值 return ExecuteReader(transaction, CommandType.StoredProcedure, spname);
25 #endregion ExecuteReader 数据阅读器 #region ExecuteScalar 返回结果集中的第一行第一列 /// 执行指定数据库连接字符串的命令, 返回结果集中的第一行第一列. /// int ordercount = (int)executescalar(connstring, CommandType.StoredProcedure, "GetOrderCount"); /// <param name="connectionstring"> 一个有效的数据库连接字符串 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名称或 T-SQL 语句 </param> /// <returns> 返回结果集中的第一行第一列 </returns> public static object ExecuteScalar(string connectionstring, CommandType commandtype, string commandtext) // ExecuteScalar #1 // 执行参数为空的方法 return ExecuteScalar(connectionString, commandtype, commandtext, (SqlParameter[])null); /// 执行指定数据库连接字符串的命令, 指定参数, 返回结果集中的第一行第一列. /// int ordercount = (int)executescalar(connstring, CommandType.StoredProcedure, "GetOrderCount", new SqlParameter("@prodid", 24)); /// <param name="connectionstring"> 一个有效的数据库连接字符串 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名称或 T-SQL 语句 </param> /// <param name="commandparameters"> 分配给命令的 SqlParamter 参数数组 </param> /// <returns> 返回结果集中的第一行第一列 </returns> public static object ExecuteScalar(string connectionstring, CommandType commandtype, string commandtext, params SqlParameter[] commandparameters)
26 // ExecuteScalar #2 if (connectionstring == null connectionstring.length == 0) throw new ArgumentNullException("connectionString"); // 创建并打开数据库连接对象, 操作完成释放对象. using (SqlConnection connection = new SqlConnection(connectionString)) connection.open(); // 调用指定数据库连接字符串重载方法. return ExecuteScalar(connection, commandtype, commandtext, commandparameters); /// 执行指定数据库连接字符串的命令, 指定参数值, 返回结果集中的第一行第一列. /// 此方法不提供访问存储过程输出参数和返回值参数. /// int ordercount = (int)executescalar(connstring, "GetOrderCount", 24, 36); /// <param name="connectionstring"> 一个有效的数据库连接字符串 </param> /// <param name="spname"> 存储过程名称 </param> /// <param name="parametervalues"> 分配给存储过程输入参数的对象数组 </param> /// <returns> 返回结果集中的第一行第一列 </returns> public static object ExecuteScalar(string connectionstring, string spname, params object[] parametervalues) // ExecuteScalar #3 if (connectionstring == null connectionstring.length == 0) throw new ArgumentNullException("connectionString"); // 如果有参数值 if ((parametervalues!= null) && (parametervalues.length > 0)) // 从缓存中加载存储过程参数, 如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(connectionString, spname); // 给存储过程参数赋值 AssignParameterValues(commandParameters, parametervalues); // 调用重载方法 return ExecuteScalar(connectionString, CommandType.StoredProcedure, spname, commandparameters);
27 // 没有参数值 return ExecuteScalar(connectionString, CommandType.StoredProcedure, spname); /// 执行指定数据库连接对象的命令, 返回结果集中的第一行第一列. /// int ordercount = (int)executescalar(conn, CommandType.StoredProcedure, "GetOrderCount"); /// <param name="connection"> 一个有效的数据库连接对象 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名称或 T-SQL 语句 </param> /// <returns> 返回结果集中的第一行第一列 </returns> public static object ExecuteScalar(SqlConnection connection, CommandType commandtype, string commandtext) // ExecuteScalar #4 // 执行参数为空的方法 return ExecuteScalar(connection, commandtype, commandtext, (SqlParameter[])null); /// 执行指定数据库连接对象的命令, 指定参数, 返回结果集中的第一行第一列. /// int ordercount = (int)executescalar(conn, CommandType.StoredProcedure, "GetOrderCount", new SqlParameter("@prodid", 24)); /// <param name="connection"> 一个有效的数据库连接对象 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名称或 T-SQL 语句 </param> /// <param name="commandparameters"> 分配给命令的 SqlParamter 参数数组 </param> /// <returns> 返回结果集中的第一行第一列 </returns> public static object ExecuteScalar(SqlConnection connection, CommandType commandtype, string commandtext, params SqlParameter[] commandparameters) // ExecuteScalar #5 if (connection == null) throw new ArgumentNullException("connection");
28 // 创建 SqlCommand 命令, 并进行预处理 SqlCommand cmd = new SqlCommand(); bool mustcloseconnection = false; PrepareCommand(cmd, connection, (SqlTransaction)null, commandtype, commandtext, commandparameters, out mustcloseconnection); // 执行 SqlCommand 命令, 并返回结果. object retval = cmd.executescalar(); // 清除参数, 以便再次使用. cmd.parameters.clear(); if (mustcloseconnection) connection.close(); return retval; /// 执行指定数据库连接对象的命令, 指定参数值, 返回结果集中的第一行第一列. /// 此方法不提供访问存储过程输出参数和返回值参数. /// int ordercount = (int)executescalar(conn, "GetOrderCount", 24, 36); /// <param name="connection"> 一个有效的数据库连接对象 </param> /// <param name="spname"> 存储过程名称 </param> /// <param name="parametervalues"> 分配给存储过程输入参数的对象数组 </param> /// <returns> 返回结果集中的第一行第一列 </returns> public static object ExecuteScalar(SqlConnection connection, string spname, params object[] parametervalues) // ExecuteScalar #6 if (connection == null) throw new ArgumentNullException("connection"); // 如果有参数值 if ((parametervalues!= null) && (parametervalues.length > 0)) // 从缓存中加载存储过程参数, 如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(connection, spname); // 给存储过程参数赋值 AssignParameterValues(commandParameters, parametervalues); // 调用重载方法 return ExecuteScalar(connection, CommandType.StoredProcedure, spname, commandparameters);
29 // 没有参数值 return ExecuteScalar(connection, CommandType.StoredProcedure, spname); /// 执行指定数据库事务的命令, 返回结果集中的第一行第一列. /// int ordercount = (int)executescalar(trans, CommandType.StoredProcedure, "GetOrderCount"); /// <param name="transaction"> 一个有效的连接事务 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名称或 T-SQL 语句 </param> /// <returns> 返回结果集中的第一行第一列 </returns> public static object ExecuteScalar(SqlTransaction transaction, CommandType commandtype, string commandtext) // ExecuteScalar #7 // 执行参数为空的方法 return ExecuteScalar(transaction, commandtype, commandtext, (SqlParameter[])null); /// 执行指定数据库事务的命令, 指定参数, 返回结果集中的第一行第一列. /// int ordercount = (int)executescalar(trans, CommandType.StoredProcedure, "GetOrderCount", new SqlParameter("@prodid", 24)); /// <param name="transaction"> 一个有效的连接事务 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名称或 T-SQL 语句 </param> /// <param name="commandparameters"> 分配给命令的 SqlParamter 参数数组 </param> /// <returns> 返回结果集中的第一行第一列 </returns> public static object ExecuteScalar(SqlTransaction transaction, CommandType commandtype, string commandtext, params SqlParameter[] commandparameters) // ExecuteScalar #8
30 if (transaction == null) throw new ArgumentNullException("transaction"); if (transaction!= null && transaction.connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); // 创建 SqlCommand 命令, 并进行预处理 SqlCommand cmd = new SqlCommand(); bool mustcloseconnection = false; PrepareCommand(cmd, transaction.connection, transaction, commandtype, commandtext, commandparameters, out mustcloseconnection); // 执行 SqlCommand 命令, 并返回结果. object retval = cmd.executescalar(); // 清除参数, 以便再次使用. cmd.parameters.clear(); return retval; /// 执行指定数据库事务的命令, 指定参数值, 返回结果集中的第一行第一列. /// 此方法不提供访问存储过程输出参数和返回值参数. /// int ordercount = (int)executescalar(trans, "GetOrderCount", 24, 36); /// <param name="transaction"> 一个有效的连接事务 </param> /// <param name="spname"> 存储过程名称 </param> /// <param name="parametervalues"> 分配给存储过程输入参数的对象数组 </param> /// <returns> 返回结果集中的第一行第一列 </returns> public static object ExecuteScalar(SqlTransaction transaction, string spname, params object[] parametervalues) // ExecuteScalar #9 if (transaction == null) throw new ArgumentNullException("transaction"); if (transaction!= null && transaction.connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); // 如果有参数值 if ((parametervalues!= null) && (parametervalues.length > 0)) SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(transaction.Connection, spname);
31 // 给存储过程参数赋值 AssignParameterValues(commandParameters, parametervalues); // 调用重载方法 return ExecuteScalar(transaction, CommandType.StoredProcedure, spname, commandparameters); // 没有参数值 return ExecuteScalar(transaction, CommandType.StoredProcedure, spname); #endregion ExecuteScalar #region ExecuteXmlReader XML 阅读器 /// 执行指定数据库连接对象的 SqlCommand 命令, 并产生一个 XmlReader 对象做为结果集返回. /// XmlReader r = ExecuteXmlReader(conn, CommandType.StoredProcedure, "GetOrders"); /// <param name="connection"> 一个有效的数据库连接对象 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名称或 T-SQL 语句 using "FOR XML AUTO"</param> /// <returns> 返回 XmlReader 结果集对象.</returns> public static XmlReader ExecuteXmlReader(SqlConnection connection, CommandType commandtype, string commandtext) // ExecuteXmlReader #1 // 执行参数为空的方法 return ExecuteXmlReader(connection, commandtype, commandtext, (SqlParameter[])null); /// 执行指定数据库连接对象的 SqlCommand 命令, 并产生一个 XmlReader 对象做为结果集返回, 指定参数.
32 /// XmlReader r = ExecuteXmlReader(conn, CommandType.StoredProcedure, "GetOrders", new SqlParameter("@prodid", 24)); /// <param name="connection"> 一个有效的数据库连接对象 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名称或 T-SQL 语句 using "FOR XML AUTO"</param> /// <param name="commandparameters"> 分配给命令的 SqlParamter 参数数组 </param> /// <returns> 返回 XmlReader 结果集对象.</returns> public static XmlReader ExecuteXmlReader(SqlConnection connection, CommandType commandtype, string commandtext, params SqlParameter[] commandparameters) // ExecuteXmlReader #2 if (connection == null) throw new ArgumentNullException("connection"); bool mustcloseconnection = false; // 创建 SqlCommand 命令, 并进行预处理 SqlCommand cmd = new SqlCommand(); try PrepareCommand(cmd, connection, (SqlTransaction)null, commandtype, commandtext, commandparameters, out mustcloseconnection); // 执行命令 XmlReader retval = cmd.executexmlreader(); // 清除参数, 以便再次使用. cmd.parameters.clear(); return retval; catch if (mustcloseconnection) connection.close(); throw; /// 执行指定数据库连接对象的 SqlCommand 命令, 并产生一个 XmlReader 对象做为结果集返回, 指定参数值. /// 此方法不提供访问存储过程输出参数和返回值参数.
33 /// XmlReader r = ExecuteXmlReader(conn, "GetOrders", 24, 36); /// <param name="connection"> 一个有效的数据库连接对象 </param> /// <param name="spname"> 存储过程名称 using "FOR XML AUTO"</param> /// <param name="parametervalues"> 分配给存储过程输入参数的对象数组 </param> /// <returns> 返回 XmlReader 结果集对象.</returns> public static XmlReader ExecuteXmlReader(SqlConnection connection, string spname, params object[] parametervalues) // ExecuteXmlReader #3 if (connection == null) throw new ArgumentNullException("connection"); // 如果有参数值 if ((parametervalues!= null) && (parametervalues.length > 0)) // 从缓存中加载存储过程参数, 如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(connection, spname); // 给存储过程参数赋值 AssignParameterValues(commandParameters, parametervalues); // 调用重载方法 return ExecuteXmlReader(connection, CommandType.StoredProcedure, spname, commandparameters); // 没有参数值 return ExecuteXmlReader(connection, CommandType.StoredProcedure, spname); /// 执行指定数据库事务的 SqlCommand 命令, 并产生一个 XmlReader 对象做为结果集返回. /// XmlReader r = ExecuteXmlReader(trans, CommandType.StoredProcedure, "GetOrders"); /// <param name="transaction"> 一个有效的连接事务 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param>
34 /// <param name="commandtext"> 存储过程名称或 T-SQL 语句 using "FOR XML AUTO"</param> /// <returns> 返回 XmlReader 结果集对象.</returns> public static XmlReader ExecuteXmlReader(SqlTransaction transaction, CommandType commandtype, string commandtext) // ExecuteXmlReader #4 // 执行参数为空的方法 return ExecuteXmlReader(transaction, commandtype, commandtext, (SqlParameter[])null); /// 执行指定数据库事务的 SqlCommand 命令, 并产生一个 XmlReader 对象做为结果集返回, 指定参数. /// XmlReader r = ExecuteXmlReader(trans, CommandType.StoredProcedure, "GetOrders", new SqlParameter("@prodid", 24)); /// <param name="transaction"> 一个有效的连接事务 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名称或 T-SQL 语句 using "FOR XML AUTO"</param> /// <param name="commandparameters"> 分配给命令的 SqlParamter 参数数组 </param> /// <returns> 返回 XmlReader 结果集对象.</returns> public static XmlReader ExecuteXmlReader(SqlTransaction transaction, CommandType commandtype, string commandtext, params SqlParameter[] commandparameters) // ExecuteXmlReader #5 if (transaction == null) throw new ArgumentNullException("transaction"); if (transaction!= null && transaction.connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); // 创建 SqlCommand 命令, 并进行预处理 SqlCommand cmd = new SqlCommand(); bool mustcloseconnection = false; PrepareCommand(cmd, transaction.connection, transaction, commandtype, commandtext, commandparameters, out mustcloseconnection); // 执行命令 XmlReader retval = cmd.executexmlreader(); // 清除参数, 以便再次使用. cmd.parameters.clear(); return retval;
35 /// 执行指定数据库事务的 SqlCommand 命令, 并产生一个 XmlReader 对象做为结果集返回, 指定参数值. /// 此方法不提供访问存储过程输出参数和返回值参数. /// XmlReader r = ExecuteXmlReader(trans, "GetOrders", 24, 36); /// <param name="transaction"> 一个有效的连接事务 </param> /// <param name="spname"> 存储过程名称 </param> /// <param name="parametervalues"> 分配给存储过程输入参数的对象数组 </param> /// <returns> 返回一个包含结果集的 DataSet.</returns> public static XmlReader ExecuteXmlReader(SqlTransaction transaction, string spname, params object[] parametervalues) // ExecuteXmlReader #6 if (transaction == null) throw new ArgumentNullException("transaction"); if (transaction!= null && transaction.connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); // 如果有参数值 if ((parametervalues!= null) && (parametervalues.length > 0)) // 从缓存中加载存储过程参数, 如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(transaction.Connection, spname); // 给存储过程参数赋值 AssignParameterValues(commandParameters, parametervalues); // 调用重载方法 return ExecuteXmlReader(transaction, CommandType.StoredProcedure, spname, commandparameters); // 没有参数值 return ExecuteXmlReader(transaction, CommandType.StoredProcedure, spname);
36 #endregion ExecuteXmlReader 阅读器结束 #region FillDataset 填充数据集 /// 执行指定数据库连接字符串的命令, 映射数据表并填充数据集. /// FillDataset(connString, CommandType.StoredProcedure, "GetOrders", ds, new string[] "orders"); /// <param name="connectionstring"> 一个有效的数据库连接字符串 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名称或 T-SQL 语句 </param> /// <param name="dataset"> 要填充结果集的 DataSet 实例 </param> /// <param name="tablenames"> 表映射的数据表数组 /// 用户定义的表名 ( 可有是实际的表名.)</param> public static void FillDataset(string connectionstring, CommandType commandtype, string commandtext, DataSet dataset, string[] tablenames) // FillDataset #1 if (connectionstring == null connectionstring.length == 0) throw new ArgumentNullException("connectionString"); if (dataset == null) throw new ArgumentNullException("dataSet"); // 创建并打开数据库连接对象, 操作完成释放对象. using (SqlConnection connection = new SqlConnection(connectionString)) connection.open(); // 调用指定数据库连接字符串重载方法. FillDataset(connection, commandtype, commandtext, dataset, tablenames); /// 执行指定数据库连接字符串的命令, 映射数据表并填充数据集. 指定命令参数. /// FillDataset(connString, CommandType.StoredProcedure, "GetOrders", ds, new string[] "orders",
37 new 24)); /// <param name="connectionstring"> 一个有效的数据库连接字符串 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名称或 T-SQL 语句 </param> /// <param name="dataset"> 分配给命令的 SqlParamter 参数数组 </param> /// <param name="tablenames"> 要填充结果集的 DataSet 实例 </param> /// <param name="commandparameters"> 表映射的数据表数组 /// 用户定义的表名 ( 可有是实际的表名.) /// </param> public static void FillDataset(string connectionstring, CommandType commandtype, string commandtext, DataSet dataset, string[] tablenames, params SqlParameter[] commandparameters) // FillDataset #2 if (connectionstring == null connectionstring.length == 0) throw new ArgumentNullException("connectionString"); if (dataset == null) throw new ArgumentNullException("dataSet"); // 创建并打开数据库连接对象, 操作完成释放对象. using (SqlConnection connection = new SqlConnection(connectionString)) connection.open(); // 调用指定数据库连接字符串重载方法. FillDataset(connection, commandtype, commandtext, dataset, tablenames, commandparameters); /// 执行指定数据库连接字符串的命令, 映射数据表并填充数据集, 指定存储过程参数值. /// 此方法不提供访问存储过程输出参数和返回值参数. /// FillDataset(connString, CommandType.StoredProcedure, "GetOrders", ds, new string[] "orders", 24); /// <param name="connectionstring"> 一个有效的数据库连接字符串 </param> /// <param name="spname"> 存储过程名称 </param> /// <param name="dataset"> 要填充结果集的 DataSet 实例 </param> /// <param name="tablenames"> 表映射的数据表数组 /// 用户定义的表名 ( 可有是实际的表名.) /// </param>
38 /// <param name="parametervalues"> 分配给存储过程输入参数的对象数组 </param> public static void FillDataset(string connectionstring, string spname, DataSet dataset, string[] tablenames, params object[] parametervalues) // FillDataset #3 if (connectionstring == null connectionstring.length == 0) throw new ArgumentNullException("connectionString"); if (dataset == null) throw new ArgumentNullException("dataSet"); // 创建并打开数据库连接对象, 操作完成释放对象. using (SqlConnection connection = new SqlConnection(connectionString)) connection.open(); // 调用指定数据库连接字符串重载方法. FillDataset(connection, spname, dataset, tablenames, parametervalues); /// 执行指定数据库连接对象的命令, 映射数据表并填充数据集. /// FillDataset(conn, CommandType.StoredProcedure, "GetOrders", ds, new string[] "orders"); /// <param name="connection"> 一个有效的数据库连接对象 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名称或 T-SQL 语句 </param> /// <param name="dataset"> 要填充结果集的 DataSet 实例 </param> /// <param name="tablenames"> 表映射的数据表数组 /// 用户定义的表名 ( 可有是实际的表名.) /// </param> public static void FillDataset(SqlConnection connection, CommandType commandtype, string commandtext, DataSet dataset, string[] tablenames) // FillDataset #4 FillDataset(connection, commandtype, commandtext, dataset, tablenames, null); /// 执行指定数据库连接对象的命令, 映射数据表并填充数据集, 指定参数. /// FillDataset(conn, CommandType.StoredProcedure, "GetOrders", ds, new string[] "orders", new
39 24)); /// <param name="connection"> 一个有效的数据库连接对象 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名称或 T-SQL 语句 </param> /// <param name="dataset"> 要填充结果集的 DataSet 实例 </param> /// <param name="tablenames"> 表映射的数据表数组 /// 用户定义的表名 ( 可有是实际的表名.) /// </param> /// <param name="commandparameters"> 分配给命令的 SqlParamter 参数数组 </param> public static void FillDataset(SqlConnection connection, CommandType commandtype, string commandtext, DataSet dataset, string[] tablenames, params SqlParameter[] commandparameters) // FillDataset #5 FillDataset(connection, null, commandtype, commandtext, dataset, tablenames, commandparameters); /// 执行指定数据库连接对象的命令, 映射数据表并填充数据集, 指定存储过程参数值. /// 此方法不提供访问存储过程输出参数和返回值参数. /// FillDataset(conn, "GetOrders", ds, new string[] "orders", 24, 36); /// <param name="connection"> 一个有效的数据库连接对象 </param> /// <param name="spname"> 存储过程名称 </param> /// <param name="dataset"> 要填充结果集的 DataSet 实例 </param> /// <param name="tablenames"> 表映射的数据表数组 /// 用户定义的表名 ( 可有是实际的表名.) /// </param> /// <param name="parametervalues"> 分配给存储过程输入参数的对象数组 </param> public static void FillDataset(SqlConnection connection, string spname, DataSet dataset, string[] tablenames, params object[] parametervalues) // FillDataset #6 if (connection == null) throw new ArgumentNullException("connection"); if (dataset == null) throw new ArgumentNullException("dataSet"); // 如果有参数值 if ((parametervalues!= null) && (parametervalues.length > 0))
40 // 从缓存中加载存储过程参数, 如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(connection, spname); // 给存储过程参数赋值 AssignParameterValues(commandParameters, parametervalues); // 调用重载方法 FillDataset(connection, CommandType.StoredProcedure, spname, dataset, tablenames, commandparameters); // 没有参数值 FillDataset(connection, CommandType.StoredProcedure, spname, dataset, tablenames); /// 执行指定数据库事务的命令, 映射数据表并填充数据集. /// FillDataset(trans, CommandType.StoredProcedure, "GetOrders", ds, new string[] "orders"); /// <param name="transaction"> 一个有效的连接事务 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名称或 T-SQL 语句 </param> /// <param name="dataset"> 要填充结果集的 DataSet 实例 </param> /// <param name="tablenames"> 表映射的数据表数组 /// 用户定义的表名 ( 可有是实际的表名.) /// </param> public static void FillDataset(SqlTransaction transaction, CommandType commandtype, string commandtext, DataSet dataset, string[] tablenames) // FillDataset #7 FillDataset(transaction, commandtype, commandtext, dataset, tablenames, null); /// 执行指定数据库事务的命令, 映射数据表并填充数据集, 指定参数.
41 /// FillDataset(trans, CommandType.StoredProcedure, "GetOrders", ds, new string[] "orders", new 24)); /// <param name="transaction"> 一个有效的连接事务 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名称或 T-SQL 语句 </param> /// <param name="dataset"> 要填充结果集的 DataSet 实例 </param> /// <param name="tablenames"> 表映射的数据表数组 /// 用户定义的表名 ( 可有是实际的表名.) /// </param> /// <param name="commandparameters"> 分配给命令的 SqlParamter 参数数组 </param> public static void FillDataset(SqlTransaction transaction, CommandType commandtype, string commandtext, DataSet dataset, string[] tablenames, params SqlParameter[] commandparameters) // FillDataset #8 FillDataset(transaction.Connection, transaction, commandtype, commandtext, dataset, tablenames, commandparameters); /// 执行指定数据库事务的命令, 映射数据表并填充数据集, 指定存储过程参数值. /// 此方法不提供访问存储过程输出参数和返回值参数. /// FillDataset(trans, "GetOrders", ds, new string[]"orders", 24, 36); /// <param name="transaction"> 一个有效的连接事务 </param> /// <param name="spname"> 存储过程名称 </param> /// <param name="dataset"> 要填充结果集的 DataSet 实例 </param> /// <param name="tablenames"> 表映射的数据表数组 /// 用户定义的表名 ( 可有是实际的表名.) /// </param> /// <param name="parametervalues"> 分配给存储过程输入参数的对象数组 </param> public static void FillDataset(SqlTransaction transaction, string spname, DataSet dataset, string[] tablenames, params object[] parametervalues) // FillDataset #9 if (transaction == null) throw new ArgumentNullException("transaction"); if (transaction!= null && transaction.connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); if (dataset == null) throw new ArgumentNullException("dataSet");
42 // 如果有参数值 if ((parametervalues!= null) && (parametervalues.length > 0)) // 从缓存中加载存储过程参数, 如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(transaction.Connection, spname); // 给存储过程参数赋值 AssignParameterValues(commandParameters, parametervalues); // 调用重载方法 FillDataset(transaction, CommandType.StoredProcedure, spname, dataset, tablenames, commandparameters); // 没有参数值 FillDataset(transaction, CommandType.StoredProcedure, spname, dataset, tablenames); /// [ 私有方法 ][ 内部调用 ] 执行指定数据库连接对象 / 事务的命令, 映射数据表并填充数据集,DataSet/TableNames/SqlParameters. /// FillDataset(conn, trans, CommandType.StoredProcedure, "GetOrders", ds, new string[] "orders", new SqlParameter("@prodid", 24)); /// <param name="connection"> 一个有效的数据库连接对象 </param> /// <param name="transaction"> 一个有效的连接事务 </param> /// <param name="commandtype"> 命令类型 ( 存储过程, 命令文本或其它 )</param> /// <param name="commandtext"> 存储过程名称或 T-SQL 语句 </param> /// <param name="dataset"> 要填充结果集的 DataSet 实例 </param> /// <param name="tablenames"> 表映射的数据表数组 /// 用户定义的表名 ( 可有是实际的表名.) /// </param> /// <param name="commandparameters"> 分配给命令的 SqlParamter 参数数组 </param> private static void FillDataset(SqlConnection connection, SqlTransaction transaction, CommandType commandtype, string commandtext, DataSet dataset, string[] tablenames, params SqlParameter[]
43 commandparameters) // FillDataset #10 if (connection == null) throw new ArgumentNullException("connection"); if (dataset == null) throw new ArgumentNullException("dataSet"); // 创建 SqlCommand 命令, 并进行预处理 SqlCommand command = new SqlCommand(); bool mustcloseconnection = false; PrepareCommand(command, connection, transaction, commandtype, commandtext, commandparameters, out mustcloseconnection); // 执行命令 using (SqlDataAdapter dataadapter = new SqlDataAdapter(command)) // 追加表映射 if (tablenames!= null && tablenames.length > 0) string tablename = "Table"; for (int index = 0; index < tablenames.length; index++) if (tablenames[index] == null tablenames[index].length == 0) throw new ArgumentException("The tablenames parameter must contain a list of tables, a value was provided as null or empty string.", "tablenames"); dataadapter.tablemappings.add(tablename, tablenames[index]); tablename += (index + 1).ToString(); // 填充数据集使用默认表名称 dataadapter.fill(dataset); // 清除参数, 以便再次使用. command.parameters.clear(); if (mustcloseconnection) connection.close(); #endregion FillDataset 填充数据集 #region UpdateDataset 更新数据集
44 /// 执行数据集更新到数据库, 指定 inserted, updated, or deleted 命令. /// UpdateDataset(conn, insertcommand, deletecommand, updatecommand, dataset, "Order"); /// <param name="insertcommand">[ 追加记录 ] 一个有效的 T-SQL 语句或存储过程 </param> /// <param name="deletecommand">[ 删除记录 ] 一个有效的 T-SQL 语句或存储过程 </param> /// <param name="updatecommand">[ 更新记录 ] 一个有效的 T-SQL 语句或存储过程 </param> /// <param name="dataset"> 要更新到数据库的 DataSet</param> /// <param name="tablename"> 要更新到数据库的 DataTable</param> public static void UpdateDataset(SqlCommand insertcommand, SqlCommand deletecommand, SqlCommand updatecommand, DataSet dataset, string tablename) if (insertcommand == null) throw new ArgumentNullException("insertCommand"); if (deletecommand == null) throw new ArgumentNullException("deleteCommand"); if (updatecommand == null) throw new ArgumentNullException("updateCommand"); if (tablename == null tablename.length == 0) throw new ArgumentNullException("tableName"); // 创建 SqlDataAdapter, 当操作完成后释放. using (SqlDataAdapter dataadapter = new SqlDataAdapter()) // 设置数据适配器命令 dataadapter.updatecommand = updatecommand; dataadapter.insertcommand = insertcommand; dataadapter.deletecommand = deletecommand; // 更新数据集改变到数据库 dataadapter.update(dataset, tablename); // 提交所有改变到数据集. dataset.acceptchanges(); #endregion UpdateDataset 更新数据集 #region CreateCommand 创建一条 SqlCommand 命令 /// 创建 SqlCommand 命令, 指定数据库连接对象, 存储过程名和参数.
45 /// SqlCommand command = CreateCommand(conn, "AddCustomer", "CustomerID", "CustomerName"); /// <param name="connection"> 一个有效的数据库连接对象 </param> /// <param name="spname"> 存储过程名称 </param> /// <param name="sourcecolumns"> 源表的列名称数组 </param> /// <returns> 返回 SqlCommand 命令 </returns> public static SqlCommand CreateCommand(SqlConnection connection, string spname, params string[] sourcecolumns) // CreateCommand #1 if (connection == null) throw new ArgumentNullException("connection"); // 创建命令 SqlCommand cmd = new SqlCommand(spName, connection); cmd.commandtype = CommandType.StoredProcedure; // 如果有参数值 if ((sourcecolumns!= null) && (sourcecolumns.length > 0)) // 从缓存中加载存储过程参数, 如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(connection, spname); // 将源表的列到映射到 DataSet 命令中. for (int index = 0; index < sourcecolumns.length; index++) commandparameters[index].sourcecolumn = sourcecolumns[index]; // Attach the discovered parameters to the SqlCommand object AttachParameters(cmd, commandparameters); return cmd; #endregion CreateCommand 创建一条 SqlCommand 命令 #region ExecuteNonQueryTypedParams 类型化参数 (DataRow)
46 /// 执行指定连接数据库连接字符串的存储过程, 使用 DataRow 做为参数值, 返回受影响的行数. /// <param name="connectionstring"> 一个有效的数据库连接字符串 </param> /// <param name="spname"> 存储过程名称 </param> /// <param name="datarow"> 使用 DataRow 作为参数值 </param> /// <returns> 返回影响的行数 </returns> public static int ExecuteNonQueryTypedParams(String connectionstring, String spname, DataRow datarow) // ExecuteNonQueryTypedParams #1 if (connectionstring == null connectionstring.length == 0) throw new ArgumentNullException("connectionString"); // 如果 row 有值, 存储过程必须初始化. if (datarow!= null && datarow.itemarray.length > 0) // 从缓存中加载存储过程参数, 如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(connectionString, spname); // 分配参数值 AssignParameterValues(commandParameters, datarow); return SqlHelper.ExecuteNonQuery(connectionString, CommandType.StoredProcedure, spname, commandparameters); return SqlHelper.ExecuteNonQuery(connectionString, CommandType.StoredProcedure, spname); /// 执行指定连接数据库连接对象的存储过程, 使用 DataRow 做为参数值, 返回受影响的行数. /// <param name="connection"> 一个有效的数据库连接对象 </param> /// <param name="spname"> 存储过程名称 </param> /// <param name="datarow"> 使用 DataRow 作为参数值 </param> /// <returns> 返回影响的行数 </returns> public static int ExecuteNonQueryTypedParams(SqlConnection connection, String spname, DataRow datarow)
47 // ExecuteNonQueryTypedParams #2 if (connection == null) throw new ArgumentNullException("connection"); // 如果 row 有值, 存储过程必须初始化. if (datarow!= null && datarow.itemarray.length > 0) // 从缓存中加载存储过程参数, 如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(connection, spname); // 分配参数值 AssignParameterValues(commandParameters, datarow); return SqlHelper.ExecuteNonQuery(connection, CommandType.StoredProcedure, spname, commandparameters); return SqlHelper.ExecuteNonQuery(connection, CommandType.StoredProcedure, spname); /// 执行指定连接数据库事物的存储过程, 使用 DataRow 做为参数值, 返回受影响的行数. /// <param name="transaction"> 一个有效的连接事务 object</param> /// <param name="spname"> 存储过程名称 </param> /// <param name="datarow"> 使用 DataRow 作为参数值 </param> /// <returns> 返回影响的行数 </returns> public static int ExecuteNonQueryTypedParams(SqlTransaction transaction, String spname, DataRow datarow) // ExecuteNonQueryTypedParams #3 if (transaction == null) throw new ArgumentNullException("transaction"); if (transaction!= null && transaction.connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); // Sf the row has values, the store procedure parameters must be initialized if (datarow!= null && datarow.itemarray.length > 0)
48 // 从缓存中加载存储过程参数, 如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(transaction.Connection, spname); // 分配参数值 AssignParameterValues(commandParameters, datarow); return SqlHelper.ExecuteNonQuery(transaction, CommandType.StoredProcedure, spname, commandparameters); return SqlHelper.ExecuteNonQuery(transaction, CommandType.StoredProcedure, spname); #endregion ExecuteNonQueryTypedParams 类型化参数 (DataRow) #region ExecuteDatasetTypedParams 类型化参数 (DataRow) /// 执行指定连接数据库连接字符串的存储过程, 使用 DataRow 做为参数值, 返回 DataSet. /// <param name="connectionstring"> 一个有效的数据库连接字符串 </param> /// <param name="spname"> 存储过程名称 </param> /// <param name="datarow"> 使用 DataRow 作为参数值 </param> /// <returns> 返回一个包含结果集的 DataSet.</returns> public static DataSet ExecuteDatasetTypedParams(string connectionstring, String spname, DataRow datarow) // ExecuteDatasetTypedParams #1 if (connectionstring == null connectionstring.length == 0) throw new ArgumentNullException("connectionString"); // 如果 row 有值, 存储过程必须初始化. if (datarow!= null && datarow.itemarray.length > 0) // 从缓存中加载存储过程参数, 如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(connectionString, spname); // 分配参数值
49 AssignParameterValues(commandParameters, datarow); return SqlHelper.ExecuteDataset(connectionString, CommandType.StoredProcedure, spname, commandparameters); return SqlHelper.ExecuteDataset(connectionString, CommandType.StoredProcedure, spname); /// 执行指定连接数据库连接对象的存储过程, 使用 DataRow 做为参数值, 返回 DataSet. /// <param name="connection"> 一个有效的数据库连接对象 </param> /// <param name="spname"> 存储过程名称 </param> /// <param name="datarow"> 使用 DataRow 作为参数值 </param> /// <returns> 返回一个包含结果集的 DataSet.</returns> public static DataSet ExecuteDatasetTypedParams(SqlConnection connection, String spname, DataRow datarow) // ExecuteDatasetTypedParams #2 if (connection == null) throw new ArgumentNullException("connection"); // 如果 row 有值, 存储过程必须初始化. if (datarow!= null && datarow.itemarray.length > 0) // 从缓存中加载存储过程参数, 如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(connection, spname); // 分配参数值 AssignParameterValues(commandParameters, datarow); return SqlHelper.ExecuteDataset(connection, CommandType.StoredProcedure, spname, commandparameters); return SqlHelper.ExecuteDataset(connection, CommandType.StoredProcedure, spname);
50 /// 执行指定连接数据库事务的存储过程, 使用 DataRow 做为参数值, 返回 DataSet. /// <param name="transaction"> 一个有效的连接事务 object</param> /// <param name="spname"> 存储过程名称 </param> /// <param name="datarow"> 使用 DataRow 作为参数值 </param> /// <returns> 返回一个包含结果集的 DataSet.</returns> public static DataSet ExecuteDatasetTypedParams(SqlTransaction transaction, String spname, DataRow datarow) // ExecuteDatasetTypedParams #3 if (transaction == null) throw new ArgumentNullException("transaction"); if (transaction!= null && transaction.connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); // 如果 row 有值, 存储过程必须初始化. if (datarow!= null && datarow.itemarray.length > 0) // 从缓存中加载存储过程参数, 如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(transaction.Connection, spname); // 分配参数值 AssignParameterValues(commandParameters, datarow); return SqlHelper.ExecuteDataset(transaction, CommandType.StoredProcedure, spname, commandparameters); return SqlHelper.ExecuteDataset(transaction, CommandType.StoredProcedure, spname); #endregion ExecuteDatasetTypedParams 类型化参数 (DataRow) #region ExecuteReaderTypedParams 类型化参数 (DataRow)
51 /// 执行指定连接数据库连接字符串的存储过程, 使用 DataRow 做为参数值, 返回 DataReader. /// <param name="connectionstring"> 一个有效的数据库连接字符串 </param> /// <param name="spname"> 存储过程名称 </param> /// <param name="datarow"> 使用 DataRow 作为参数值 </param> /// <returns> 返回包含结果集的 SqlDataReader</returns> public static SqlDataReader ExecuteReaderTypedParams(String connectionstring, String spname, DataRow datarow) // ExecuteReaderTypedParams #1 if (connectionstring == null connectionstring.length == 0) throw new ArgumentNullException("connectionString"); // 如果 row 有值, 存储过程必须初始化. if (datarow!= null && datarow.itemarray.length > 0) // 从缓存中加载存储过程参数, 如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(connectionString, spname); // 分配参数值 AssignParameterValues(commandParameters, datarow); return SqlHelper.ExecuteReader(connectionString, CommandType.StoredProcedure, spname, commandparameters); return SqlHelper.ExecuteReader(connectionString, CommandType.StoredProcedure, spname); /// 执行指定连接数据库连接对象的存储过程, 使用 DataRow 做为参数值, 返回 DataReader. /// <param name="connection"> 一个有效的数据库连接对象 </param> /// <param name="spname"> 存储过程名称 </param> /// <param name="datarow"> 使用 DataRow 作为参数值 </param> /// <returns> 返回包含结果集的 SqlDataReader</returns> public static SqlDataReader ExecuteReaderTypedParams(SqlConnection connection, String spname, DataRow datarow)
52 // ExecuteReaderTypedParams #2 if (connection == null) throw new ArgumentNullException("connection"); // 如果 row 有值, 存储过程必须初始化. if (datarow!= null && datarow.itemarray.length > 0) // 从缓存中加载存储过程参数, 如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(connection, spname); // 分配参数值 AssignParameterValues(commandParameters, datarow); return SqlHelper.ExecuteReader(connection, CommandType.StoredProcedure, spname, commandparameters); return SqlHelper.ExecuteReader(connection, CommandType.StoredProcedure, spname); /// 执行指定连接数据库事物的存储过程, 使用 DataRow 做为参数值, 返回 DataReader. /// <param name="transaction"> 一个有效的连接事务 object</param> /// <param name="spname"> 存储过程名称 </param> /// <param name="datarow"> 使用 DataRow 作为参数值 </param> /// <returns> 返回包含结果集的 SqlDataReader</returns> public static SqlDataReader ExecuteReaderTypedParams(SqlTransaction transaction, String spname, DataRow datarow) // ExecuteReaderTypedParams #3 if (transaction == null) throw new ArgumentNullException("transaction"); if (transaction!= null && transaction.connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); // 如果 row 有值, 存储过程必须初始化. if (datarow!= null && datarow.itemarray.length > 0)
53 // 从缓存中加载存储过程参数, 如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(transaction.Connection, spname); // 分配参数值 AssignParameterValues(commandParameters, datarow); return SqlHelper.ExecuteReader(transaction, CommandType.StoredProcedure, spname, commandparameters); return SqlHelper.ExecuteReader(transaction, CommandType.StoredProcedure, spname); #endregion ExecuteReaderTypedParams 类型化参数 (DataRow) #region ExecuteScalarTypedParams 类型化参数 (DataRow) /// 执行指定连接数据库连接字符串的存储过程, 使用 DataRow 做为参数值, 返回结果集中的第一行第一列. /// <param name="connectionstring"> 一个有效的数据库连接字符串 </param> /// <param name="spname"> 存储过程名称 </param> /// <param name="datarow"> 使用 DataRow 作为参数值 </param> /// <returns> 返回结果集中的第一行第一列 </returns> public static object ExecuteScalarTypedParams(String connectionstring, String spname, DataRow datarow) // ExecuteScalarTypedParams #1 if (connectionstring == null connectionstring.length == 0) throw new ArgumentNullException("connectionString"); // 如果 row 有值, 存储过程必须初始化. if (datarow!= null && datarow.itemarray.length > 0) // 从缓存中加载存储过程参数, 如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () SqlParameter[] commandparameters =
54 SqlHelperParameterCache.GetSpParameterSet(connectionString, spname); // 分配参数值 AssignParameterValues(commandParameters, datarow); return SqlHelper.ExecuteScalar(connectionString, CommandType.StoredProcedure, spname, commandparameters); return SqlHelper.ExecuteScalar(connectionString, CommandType.StoredProcedure, spname); /// 执行指定连接数据库连接对象的存储过程, 使用 DataRow 做为参数值, 返回结果集中的第一行第一列. /// <param name="connection"> 一个有效的数据库连接对象 </param> /// <param name="spname"> 存储过程名称 </param> /// <param name="datarow"> 使用 DataRow 作为参数值 </param> /// <returns> 返回结果集中的第一行第一列 </returns> public static object ExecuteScalarTypedParams(SqlConnection connection, String spname, DataRow datarow) // ExecuteScalarTypedParams #2 if (connection == null) throw new ArgumentNullException("connection"); // 如果 row 有值, 存储过程必须初始化. if (datarow!= null && datarow.itemarray.length > 0) // 从缓存中加载存储过程参数, 如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(connection, spname); // 分配参数值 AssignParameterValues(commandParameters, datarow); commandparameters); return SqlHelper.ExecuteScalar(connection, CommandType.StoredProcedure, spname,
55 return SqlHelper.ExecuteScalar(connection, CommandType.StoredProcedure, spname); /// 执行指定连接数据库事务的存储过程, 使用 DataRow 做为参数值, 返回结果集中的第一行第一列. /// <param name="transaction"> 一个有效的连接事务 object</param> /// <param name="spname"> 存储过程名称 </param> /// <param name="datarow"> 使用 DataRow 作为参数值 </param> /// <returns> 返回结果集中的第一行第一列 </returns> public static object ExecuteScalarTypedParams(SqlTransaction transaction, String spname, DataRow datarow) // ExecuteScalarTypedParams #3 if (transaction == null) throw new ArgumentNullException("transaction"); if (transaction!= null && transaction.connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); // 如果 row 有值, 存储过程必须初始化. if (datarow!= null && datarow.itemarray.length > 0) // 从缓存中加载存储过程参数, 如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(transaction.Connection, spname); // 分配参数值 AssignParameterValues(commandParameters, datarow); return SqlHelper.ExecuteScalar(transaction, CommandType.StoredProcedure, spname, commandparameters); return SqlHelper.ExecuteScalar(transaction, CommandType.StoredProcedure, spname); #endregion ExecuteScalarTypedParams 类型化参数 (DataRow)
56 #region ExecuteXmlReaderTypedParams 类型化参数 (DataRow) /// 执行指定连接数据库连接对象的存储过程, 使用 DataRow 做为参数值, 返回 XmlReader 类型的结果集. /// <param name="connection"> 一个有效的数据库连接对象 </param> /// <param name="spname"> 存储过程名称 </param> /// <param name="datarow"> 使用 DataRow 作为参数值 </param> /// <returns> 返回 XmlReader 结果集对象.</returns> public static XmlReader ExecuteXmlReaderTypedParams(SqlConnection connection, String spname, DataRow datarow) // ExecuteXmlReaderTypedParams #1 if (connection == null) throw new ArgumentNullException("connection"); // 如果 row 有值, 存储过程必须初始化. if (datarow!= null && datarow.itemarray.length > 0) // 从缓存中加载存储过程参数, 如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(connection, spname); // 分配参数值 AssignParameterValues(commandParameters, datarow); return SqlHelper.ExecuteXmlReader(connection, CommandType.StoredProcedure, spname, commandparameters); return SqlHelper.ExecuteXmlReader(connection, CommandType.StoredProcedure, spname); /// 执行指定连接数据库事务的存储过程, 使用 DataRow 做为参数值, 返回 XmlReader 类型的结果集. /// <param name="transaction"> 一个有效的连接事务 object</param> /// <param name="spname"> 存储过程名称 </param>
57 /// <param name="datarow"> 使用 DataRow 作为参数值 </param> /// <returns> 返回 XmlReader 结果集对象.</returns> public static XmlReader ExecuteXmlReaderTypedParams(SqlTransaction transaction, String spname, DataRow datarow) // ExecuteXmlReaderTypedParams #2 if (transaction == null) throw new ArgumentNullException("transaction"); if (transaction!= null && transaction.connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction"); // 如果 row 有值, 存储过程必须初始化. if (datarow!= null && datarow.itemarray.length > 0) // 从缓存中加载存储过程参数, 如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. () SqlParameter[] commandparameters = SqlHelperParameterCache.GetSpParameterSet(transaction.Connection, spname); // 分配参数值 AssignParameterValues(commandParameters, datarow); return SqlHelper.ExecuteXmlReader(transaction, CommandType.StoredProcedure, spname, commandparameters); return SqlHelper.ExecuteXmlReader(transaction, CommandType.StoredProcedure, spname); #endregion ExecuteXmlReaderTypedParams 类型化参数 (DataRow) SqlHelperParameterCatch.cs 文件源代码和注释 : using System; using System.Collections.Generic; using System.Web; using System.Data.SqlClient; using System.Collections; using System.Data;
58 ///SqlHelperParameterCache 的摘要说明 public sealed class SqlHelperParameterCache #region private methods, variables, and constructors //Since this class provides only static methods, make the default constructor private to prevent //instances from being created with "new SqlHelperParameterCache()" private SqlHelperParameterCache() private static Hashtable paramcache = Hashtable.Synchronized(new Hashtable()); /// Resolve at run time the appropriate set of SqlParameters for a stored procedure /// <param name="connection">a valid SqlConnection object</param> /// <param name="spname">the name of the stored procedure</param> /// <param name="includereturnvalueparameter">whether or not to include their return value parameter</param> /// <returns>the parameter array discovered.</returns> private static SqlParameter[] DiscoverSpParameterSet(SqlConnection connection, string spname, bool includereturnvalueparameter) if (connection == null) throw new ArgumentNullException("connection"); SqlCommand cmd = new SqlCommand(spName, connection); cmd.commandtype = CommandType.StoredProcedure; connection.open(); SqlCommandBuilder.DeriveParameters(cmd); connection.close(); if (!includereturnvalueparameter) cmd.parameters.removeat(0); SqlParameter[] discoveredparameters = new SqlParameter[cmd.Parameters.Count]; cmd.parameters.copyto(discoveredparameters, 0); // Init the parameters with a DBNull value
59 foreach (SqlParameter discoveredparameter in discoveredparameters) discoveredparameter.value = DBNull.Value; return discoveredparameters; /// Deep copy of cached SqlParameter array /// <param name="originalparameters"></param> /// <returns></returns> private static SqlParameter[] CloneParameters(SqlParameter[] originalparameters) SqlParameter[] clonedparameters = new SqlParameter[originalParameters.Length]; for (int i = 0, j = originalparameters.length; i < j; i++) clonedparameters[i] = (SqlParameter)((ICloneable)originalParameters[i]).Clone(); return clonedparameters; #endregion private methods, variables, and constructors #region caching functions /// Add parameter array to the cache /// <param name="connectionstring">a valid connection string for a SqlConnection</param> /// <param name="commandtext">the stored procedure name or T-SQL command</param> /// <param name="commandparameters">an array of SqlParamters to be cached</param> public static void CacheParameterSet(string connectionstring, string commandtext, params SqlParameter[] commandparameters) if (connectionstring == null connectionstring.length == 0) throw new ArgumentNullException("connectionString"); if (commandtext == null commandtext.length == 0) throw new ArgumentNullException("commandText"); string hashkey = connectionstring + ":" + commandtext;
60 paramcache[hashkey] = commandparameters; /// Retrieve a parameter array from the cache /// <param name="connectionstring">a valid connection string for a SqlConnection</param> /// <param name="commandtext">the stored procedure name or T-SQL command</param> /// <returns>an array of SqlParamters</returns> public static SqlParameter[] GetCachedParameterSet(string connectionstring, string commandtext) if (connectionstring == null connectionstring.length == 0) throw new ArgumentNullException("connectionString"); if (commandtext == null commandtext.length == 0) throw new ArgumentNullException("commandText"); string hashkey = connectionstring + ":" + commandtext; SqlParameter[] cachedparameters = paramcache[hashkey] as SqlParameter[]; if (cachedparameters == null) return null; return CloneParameters(cachedParameters); #endregion caching functions #region Parameter Discovery Functions /// Retrieves the set of SqlParameters appropriate for the stored procedure /// This method will query the database for this information, and then store it in a cache for future requests. /// <param name="connectionstring">a valid connection string for a SqlConnection</param> /// <param name="spname">the name of the stored procedure</param> /// <returns>an array of SqlParameters</returns> public static SqlParameter[] GetSpParameterSet(string connectionstring, string spname)
61 return GetSpParameterSet(connectionString, spname, false); /// Retrieves the set of SqlParameters appropriate for the stored procedure /// This method will query the database for this information, and then store it in a cache for future requests. /// <param name="connectionstring">a valid connection string for a SqlConnection</param> /// <param name="spname">the name of the stored procedure</param> /// <param name="includereturnvalueparameter">a bool value indicating whether the return value parameter should be included in the results</param> /// <returns>an array of SqlParameters</returns> public static SqlParameter[] GetSpParameterSet(string connectionstring, string spname, bool includereturnvalueparameter) if (connectionstring == null connectionstring.length == 0) throw new ArgumentNullException("connectionString"); using (SqlConnection connection = new SqlConnection(connectionString)) return GetSpParameterSetInternal(connection, spname, includereturnvalueparameter); /// Retrieves the set of SqlParameters appropriate for the stored procedure /// This method will query the database for this information, and then store it in a cache for future requests. /// <param name="connection">a valid SqlConnection object</param> /// <param name="spname">the name of the stored procedure</param> /// <returns>an array of SqlParameters</returns> internal static SqlParameter[] GetSpParameterSet(SqlConnection connection, string spname) return GetSpParameterSet(connection, spname, false);
62 /// Retrieves the set of SqlParameters appropriate for the stored procedure /// This method will query the database for this information, and then store it in a cache for future requests. /// <param name="connection">a valid SqlConnection object</param> /// <param name="spname">the name of the stored procedure</param> /// <param name="includereturnvalueparameter">a bool value indicating whether the return value parameter should be included in the results</param> /// <returns>an array of SqlParameters</returns> internal static SqlParameter[] GetSpParameterSet(SqlConnection connection, string spname, bool includereturnvalueparameter) if (connection == null) throw new ArgumentNullException("connection"); using (SqlConnection clonedconnection = (SqlConnection)((ICloneable)connection).Clone()) return GetSpParameterSetInternal(clonedConnection, spname, includereturnvalueparameter); /// Retrieves the set of SqlParameters appropriate for the stored procedure /// <param name="connection">a valid SqlConnection object</param> /// <param name="spname">the name of the stored procedure</param> /// <param name="includereturnvalueparameter">a bool value indicating whether the return value parameter should be included in the results</param> /// <returns>an array of SqlParameters</returns> private static SqlParameter[] GetSpParameterSetInternal(SqlConnection connection, string spname, bool includereturnvalueparameter) if (connection == null) throw new ArgumentNullException("connection"); string hashkey = connection.connectionstring + ":" + spname + (includereturnvalueparameter? ":include ReturnValue Parameter" : ""); SqlParameter[] cachedparameters; cachedparameters = paramcache[hashkey] as SqlParameter[]; if (cachedparameters == null)
63 SqlParameter[] spparameters = DiscoverSpParameterSet(connection, spname, includereturnvalueparameter); paramcache[hashkey] = spparameters; cachedparameters = spparameters; return CloneParameters(cachedParameters); #endregion Parameter Discovery Functions
教案模板4-2
传 智 播 客 ASP.NET 就 业 实 例 教 程 教 学 设 计 课 程 名 称 :ASP.NET 就 业 实 例 教 程 授 课 年 级 : 2015 年 级 授 课 学 期 : 2015 学 年 第 二 学 期 教 师 姓 名 : 某 某 老 师 2015 年 02 月 02 日 课 题 名 称 第 2 章 ADO.NET 计 划 学 时 6 课 时 内 容 分 析 教 学 目 标 及 基
ASP
ASP.NET 三层架构详解 Power By: Tian 一 数据库 /*==========================================*/ /* DBMS name: Microsoft SQL Server 2000 */ /*==========================================*/ if exists (select 1 from sysobjects
untitled
1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override
2 ADO.NET Internet 1.2
C H A P T E R 1 ADO.NET XML ADO.NET ADO.NET.NET Framework.NET XML ADO.NET.NET Microsoft Visual Studio 200 ADO.NET ADO.NET 2 ADO.NET 1 1.1 1.1 1.1 1.2 Internet 1.2 1.1 Internet 2 1.2 (Internet) Web 1. ADO.NET
untitled
1 Access 料 (1) 立 料 [] [] [ 料 ] 立 料 Access 料 (2) 料 [ 立 料 ] Access 料 (3) 料 料 料 料 料 料 欄 ADO.NET ADO.NET.NET Framework 類 來 料 料 料 料 料 Ex MSSQL Access Excel XML ADO.NET 連 .NET 料.NET 料 料來 類.NET Data Provider
untitled
1 .NET 料.NET 料 料來 類.NET Data Provider SQL.NET Data Provider System.Data.SqlClient 料 MS-SQL OLE DB.NET Data Provider System.Data.OleDb 料 Dbase FoxPro Excel Access Oracle Access ODBC.NET Data Provider 料
<463A5CC2A4B6ABD1A7D4BA5CBDCCD1A7D6B8C4CFD7DC5CA1B656697375616C20432320B3CCD0F2C9E8BCC6A1B7BFCEB3CCD6B8C4CF2E646F63>
目 录 Visual C# 程 序 设 计 课 程 指 南 计 算 机 科 导 论 课 程 指 南 8 计 算 机 网 络 基 础 课 程 指 南 4 网 络 工 程 课 程 设 计 课 程 指 南 0 网 络 应 用 与 实 践 课 程 指 南 4 ADO.net 课 程 指 南 7 C 程 序 设 计 课 程 指 南 数 字 信 号 处 理 DSP 课 程 指 南 9 电 子 电 路 EDA 技
前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii
前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii C# 7 More Effective C# C# C# C# C# C# Common Language Runtime CLR just-in-time
SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基
开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些
untitled
12-1 -2 VC# Web Blog 12-1 -1-1 12-1.1-1 C:\ ChartModuleSample_CSharp\Application\2001\ Files\ 4096 KB 120 Web.Config httpruntime maxrequestlength executiontimeout 12-2
untitled
Inside ASP.NET 2.0- ASP.NET 1.1 2. 理念 讀 了 了 度 讀 了 理 類 來 來說 流 了 來 來 來 來 理 來 不 讀 不 不 力 來參 流 讀 了 異 行 來了 錄 行 不 了 來 了 來 行 論說 了 更 不 例 來了 力 行 樂 不 說 兩 例 利 來 了 來 樂 了 了 令 讀 來 不 不 來 了 不 旅行 令 錄 錄 來 了 例 來 利 來 ManagerProvide
Microsoft Word - 01.DOC
第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的
untitled
Data Source 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 8-1 Data Source 8-2 Data Source 8-3 Data Source 8-4 Data Source 8-5 DataSourceID 8-6 DataSourceMode 8-7 DataSource 8-8 8-9 Parameter Direction
( 含 要 ) 1-2 用 或 雇 用, 抑 或 有 無 俸 給 文 職 或 武 職, 政 官 或 事 官 均 屬 之, 其 不 以 具 備 人 資 格 為 限, 因 此 屬 於 最 廣 義 之 念 四 廣 義 念 之 依 服 24 條 之 規 定 : 本 於 受 有 俸 給 之 文 武 職, 及
本 學 習 重 點 研 讀 首 先 應 釐 清 不 同 規 對 與 職 人 念 的 定 義, 其 中 之 定 義 從 最 廣 義 廣 義 狹 義 到 最 狹 義 的 人, 都 會 牽 涉 到 規 適 用 上 的 不 同, 而 職 人 涵 蓋 範 圍 比 更 廣, 讀 者 應 注 意 兩 者 之 間 的 區 別 建 議 讀 者 與 考 生 於 開 始 研 讀 之 際, 利 用 本 之 內 容 確 實
Microsoft Word - ch04三校.doc
4-1 4-1-1 (Object) (State) (Behavior) ( ) ( ) ( method) ( properties) ( functions) 4-2 4-1-2 (Message) ( ) ( ) ( ) A B A ( ) ( ) ( YourCar) ( changegear) ( lowergear) 4-1-3 (Class) (Blueprint) 4-3 changegear
Guava学习之Resources
Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于
《大话设计模式》第一章
第 1 章 代 码 无 错 就 是 优? 简 单 工 厂 模 式 1.1 面 试 受 挫 小 菜 今 年 计 算 机 专 业 大 四 了, 学 了 不 少 软 件 开 发 方 面 的 东 西, 也 学 着 编 了 些 小 程 序, 踌 躇 满 志, 一 心 要 找 一 个 好 单 位 当 投 递 了 无 数 份 简 历 后, 终 于 收 到 了 一 个 单 位 的 面 试 通 知, 小 菜 欣 喜
PowerPoint Template
RedGres MSSQL 到 PostgreSQL 的应用迁移 Migration Application from MSSQL to PostgreSQL Jerray.Huang 主要内容 1. 2. 3. 4. 迁移总体分析 数据迁移 - 类型与函数 语法与存储过程迁移 数据提供程序迁移 为什么要迁移 操作系统的问题 版权问题 经济问题 稳定性问题 客户要求 政府要求 硬件升级 其它 MS-SQL
untitled
1 Outline 料 類 說 Tang, Shih-Hsuan 2006/07/26 ~ 2006/09/02 六 PM 7:00 ~ 9:30 聯 [email protected] www.csie.ntu.edu.tw/~r93057/aspnet134 度 C# 力 度 C# Web SQL 料 DataGrid DataList 參 ASP.NET 1.0 C# 例 ASP.NET 立
( 总 第 1073 期 ) 浙 江 省 人 民 政 府 主 办 2015 年 3 月 17 日 出 版 省 政 府 令 省 政 府 文 件 目 录 浙 江 省 大 型 群 众 性 活 动 安 全 管 理 办 法 ( 浙 江 省 人 民 政 府 令 第 333 号 ) (3) 浙 江 省 人 民 政
( 总 第 1073 期 ) 浙 江 省 人 民 政 府 主 办 2015 年 3 月 17 日 出 版 省 政 府 令 省 政 府 文 件 目 录 浙 江 省 大 型 群 众 性 活 动 安 全 管 理 办 法 ( 浙 江 省 人 民 政 府 令 第 333 号 ) (3) 浙 江 省 人 民 政 府 关 于 命 名 第 一 批 省 级 生 态 市 第 七 批 省 级 生 态 县 ( 市 区 )
Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc
References (Section 5.2) Hsuan-Tien Lin Deptartment of CSIE, NTU OOP Class, March 15-16, 2010 H.-T. Lin (NTU CSIE) References OOP 03/15-16/2010 0 / 22 Fun Time (1) What happens in memory? 1 i n t i ; 2
(Microsoft PowerPoint -
Windows 程式設計 ADO.NET 資料存取 ( 一 ) 講師 : 林賢達 [email protected] 課程大綱 安裝 SQL Server 2005 Express Edition RDBMS 基礎概念 測試資料庫簡介 ADO.NET 概述 Connection 物件與 Command 物件 Parameters 集合物件 DataReader 物件 資料繫結 RDBMS
Microsoft Office SharePoint Server MOSS Web SharePoint Web SharePoint 22 Web SharePoint Web Web SharePoint Web Web f Lists.asmx Web Web CAML f
Web Chapter 22 SharePoint Web Microsoft Office SharePoint Server MOSS Web SharePoint Web SharePoint 22 Web 21 22-1 SharePoint Web Web SharePoint Web Web f Lists.asmx Web Web CAML f Views.asmx View SharePoint
概述
OPC Version 1.6 build 0910 KOSRDK Knight OPC Server Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOS_Init...5 2.2.2 KOS_InitB...5 2.2.3
2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF
Chapter 2 WF 2.1 WF 2.2 2. XAML 2. 2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF WF WF WF WF EDI API WF Visual Studio Designer 1 2.1 WF Windows Workflow Foundation 2 WF 1 WF Domain-Specific
chp6.ppt
Java 软 件 设 计 基 础 6. 异 常 处 理 编 程 时 会 遇 到 如 下 三 种 错 误 : 语 法 错 误 (syntax error) 没 有 遵 循 语 言 的 规 则, 出 现 语 法 格 式 上 的 错 误, 可 被 编 译 器 发 现 并 易 于 纠 正 ; 逻 辑 错 误 (logic error) 即 我 们 常 说 的 bug, 意 指 编 写 的 代 码 在 执 行
新版 明解C++入門編
511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,
C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1
C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,
Microsoft PowerPoint - ch6 [相容模式]
UiBinder [email protected] UiBinder Java GWT UiBinder XML UI i18n (widget) 1 2 UiBinder HelloWidget.ui.xml: UI HelloWidgetBinder HelloWidget.java XML UI Owner class ( Composite ) UI XML UiBinder: Owner
投影片 1
資料庫管理程式 ( 補充教材 -Part2) 使用 ADO.NET 連結資料庫 ( 自行撰寫程式碼 以實現新增 刪除 修改等功能 ) Private Sub InsertButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InsertButton.Click ' 宣告相關的 Connection
38 47995529 威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 1059003070 號 39 47995534 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民
1 08414159 惠 鴻 眼 鏡 行 桃 園 市 中 壢 區 福 德 里 中 華 路 一 段 186 號 1 樓 30,000 獨 資 宋 耀 鴻 105/04/27 府 經 登 字 第 1059003866 號 2 17891110 承 元 冷 氣 空 調 工 程 行 桃 園 市 桃 園 區 中 德 里 國 際 路 1 段 98 巷 50 號 2 樓 之 4 200,000 獨 資 詹 安 平
Microsoft Word - 第9章 ASP.NET操作数据库.doc
第 9 章 ASP.NET 操作数据库 通过对 ADO.NET 的基本讲解, 以及讲解了一些数据源控件的基本用法后, 本章将介绍一些 ASP.NET 操作数据库的高级用法, 包括使用 SQLHelper 以及数据源控件对数据的操作 本章是对前面的数据库知识的一种补充和提升 9.1 使用 ADO.NET 操作数据库 上一章中介绍了 ADO.NET 的基本概念 ADO.NET 的对象, 以及如何使用 ADO.NET
EJB-Programming-4-cn.doc
EJB (4) : (Entity Bean Value Object ) JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Session Bean J2EE Session Façade Design Pattern Session Bean Session
无类继承.key
无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo [email protected] https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255
<4D F736F F D20CAFDBEDDBFE2C1ACBDD3BDB2D2E52E646F63>
数据库连接 目标 : 熟练掌握 connection,command, DataReader, DataSet 类进行数据库连接. 重点 : 数据读取器, 和数据集的使用. 难点 : 数据集数据的填充. 一 ADO.net 概述 ADO.NET 是新一代 Microsoft ActiveX 数据对象 (ADO), 它是一种应用程序编程界面 (API), 可用来创建分布式的数据共享应用程序 尽管 ADO.NET
Microsoft Word - A doc
使用 ASP.NET 技术实现 BLOB 类型数据存取的研究 陈少平, 方子帆, 舒文辉三峡大学机械与材料学院, 湖北宜昌 (443002) E-mail:[email protected] 摘要 : 通过对 ADO.NET 技术的数据模型分析研究与特点概述, 提出了对数据库中 BLOB 类型的数据进行存取的实现方法 结合具体实例, 说明在 Web 数据库系统中, 如何运用 ASP.NET 技术实现 Oracle
(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit
Tomcat Web JUnit Cactus JUnit Java Cactus JUnit 26.1 JUnit Java JUnit JUnit Java JSP Servlet JUnit Java Erich Gamma Kent Beck xunit JUnit boolean JUnit Java JUnit Java JUnit Java 26.1.1 JUnit JUnit How
Microsoft PowerPoint - string_kruse [兼容模式]
Strings Strings in C not encapsulated Every C-string has type char *. Hence, a C-string references an address in memory, the first of a contiguous set of bytes that store the characters making up the string.
1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F
1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET 2.0 2.0.NET Framework.NET Framework 2.0 ( 3).NET Framework 2.0.NET Framework ( System ) o o o o o o Boxing UnBoxing() o
chap07.key
#include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,
1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10
Java V1.0.1 2007 4 10 1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 6.2.10 6.3..10 6.4 11 7.12 7.1
「西醫基層總額支付委員會《第28次委員會議紀錄
西 醫 基 層 總 額 支 付 委 員 會 101 年 第 2 次 委 員 會 議 紀 錄 時 間 :101 年 5 月 23 日 下 午 2 時 地 點 : 中 央 健 康 保 險 局 18 樓 會 議 室 ( 台 北 市 信 義 路 3 段 140 號 18 樓 ) 主 席 : 黃 召 集 人 三 桂 出 席 委 員 : 王 委 員 正 坤 王 委 員 錦 基 古 委 員 博 仁 王 正 坤 王
Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,
http://debut.cis.nctu.edu.tw/~chi Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, : POSITIVE_INFINITY NEGATIVE_INFINITY
OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课
OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 复习 Java 包 创建包 : package 语句, 包结构与目录结构一致 使用包 : import restaurant/ - people/ - Cook.class - Waiter.class - tools/ - Fork.class
<ADB6ADB1C25EA8FAA6DB2D4D56432E706466>
packages 3-31 PART 3-31 03-03 ASP.NET ASP.N MVC ASP.NET ASP.N MVC 4 ASP.NET ASP.NE MVC Entity Entity Framework Code First 2 TIPS Visual Studio 20NuGetEntity NuGetEntity Framework5.0 CHAPTER 03 59 3-3-1
1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6
www.brainysoft.net 1.JasperReport ireport...4 1.1 JasperReport...4 1.2 ireport...4 2....4 2.1 JDK...4 2.1.1 JDK...4 2.1.2 JDK...5 2.1.3 JDK...5 2.2 ant...6 2.2.1 ant...6 2.2.2 ant...6 2.3 JasperReport...7
,, 1 ( ) 1 / CurrentSeries Int ConnectionString CString Style3D BOOL IsContinue Graph BOOL LegendType Int SeriesName CString SeriesColor OL E
2007 9 12 5 JOURNAL OF XI AN UN IV ERSITY OF POST AND TEL ECOMMUN ICA TIONS Sep12007 Vol112 No15 TeeChart (, 710121) : ActiveX TeeChart, Visual C + +,,,, :ActiveX ;;Visual C + + : TP311. 1 :A :1007-3264
untitled
1 LinkButton LinkButton 連 Button Text Visible Click HyperLink HyperLink 來 立 連 Text ImageUrl ( ) NavigateUrl 連 Target 連 _blank _parent frameset _search _self 連 _top 例 sample2-a1 易 連 private void Page_Load(object
1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->
目录 1 大概思路... 1 2 创建 WebAPI... 1 3 创建 CrossMainController 并编写... 1 4 Nuget 安装 microsoft.aspnet.webapi.cors... 4 5 跨域设置路由... 4 6 编写 Jquery EasyUI 界面... 5 7 运行效果... 7 8 总结... 7 1 1 大概思路 创建 WebAPI 创建 CrossMainController
FY.DOC
高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主
OOP with Java 通知 Project 4: 4 月 19 日晚 9 点
OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d
第3章.doc
3 3 3 3.1 3 IT Trend C++ Java SAP Advantech ERPCRM C++ C++ Synopsys C++ NEC C C++PHP C++Java C++Java VIA C++ 3COM C++ SPSS C++ Sybase C++LinuxUNIX Motorola C++ IBM C++Java Oracle Java HP C++ C++ Yahoo
ebook39-5
5 3 last-in-first-out, LIFO 3-1 L i n e a r L i s t 3-8 C h a i n 3 3. 8. 3 C + + 5.1 [ ] s t a c k t o p b o t t o m 5-1a 5-1a E D 5-1b 5-1b E E 5-1a 5-1b 5-1c E t o p D t o p D C C B B B t o p A b o
ADO.NET 資料庫存取架構
資料庫離線存取模式 建國科技大學資管系饒瑞佶 ADO.NET 資料庫存取架構 DataSet DataSet 是一個放在記憶體中的資料結構 將資料庫的結構與資料複製到記憶體中, 用表格的方式來儲存 減少資料庫負擔與增加存取效率 容易進行取得 傳遞與顯示裡面的資料 需要額外的同步機制 記憶體 DataAdapter Command Connection DB Product Price Quantity
提问袁小兵:
C++ 面 试 试 题 汇 总 柯 贤 富 管 理 软 件 需 求 分 析 篇 1. STL 类 模 板 标 准 库 中 容 器 和 算 法 这 部 分 一 般 称 为 标 准 模 板 库 2. 为 什 么 定 义 虚 的 析 构 函 数? 避 免 内 存 问 题, 当 你 可 能 通 过 基 类 指 针 删 除 派 生 类 对 象 时 必 须 保 证 基 类 析 构 函 数 为 虚 函 数 3.
KillTest 质量更高 服务更好 学习资料 半年免费更新服务
KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 1Z0-854 Title : Java Standard Edition 5 Programmer Certified Professional Upgrade Exam Version : Demo 1 / 12 1.Given: 20. public class CreditCard
JavaIO.PDF
O u t p u t S t ream j a v a. i o. O u t p u t S t r e a m w r i t e () f l u s h () c l o s e () public abstract void write(int b) throws IOException public void write(byte[] data) throws IOException
1. 访 问 最 新 发 行 公 告 信 息 jconnect for JDBC 7.0 1. 访 问 最 新 发 行 公 告 信 息 最 新 版 本 的 发 行 公 告 可 以 从 网 上 获 得 若 要 查 找 在 本 产 品 发 布 后 增 加 的 重 要 产 品 或 文 档 信 息, 请 访
发 行 公 告 jconnect for JDBC 7.0 文 档 ID:DC74874-01-0700-01 最 后 修 订 日 期 :2010 年 3 月 2 日 主 题 页 码 1. 访 问 最 新 发 行 公 告 信 息 2 2. 产 品 摘 要 2 3. 特 殊 安 装 说 明 2 3.1 查 看 您 的 jconnect 版 本 3 4. 特 殊 升 级 指 导 3 4.1 迁 移 3
雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO
CHAPTER 使用 Hadoop 打造自己的雲 8 8.3 測試 Hadoop 雲端系統 4 Nodes Hadoop Map Reduce Hadoop WordCount 4 Nodes Hadoop Map/Reduce $HADOOP_HOME /home/ hadoop/hadoop-0.20.2 wordcount echo $ mkdir wordcount $ cd wordcount
帝国CMS下在PHP文件中调用数据库类执行SQL语句实例
帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)
IoC容器和Dependency Injection模式.doc
IoC Dependency Injection /Martin Fowler / Java Inversion of Control IoC Dependency Injection Service Locator Java J2EE open source J2EE J2EE web PicoContainer Spring Java Java OO.NET service component
ebook39-6
6 first-in-first-out, FIFO L i n e a r L i s t 3-1 C h a i n 3-8 5. 5. 3 F I F O L I F O 5. 5. 6 5. 5. 6.1 [ ] q u e n e ( r e a r ) ( f r o n t 6-1a A 6-1b 6-1b D C D 6-1c a) b) c) 6-1 F I F O L I F ADT
Microsoft Word - 陈锐浩.doc
深 圳 职 业 技 术 学 院 学 报 2011 年 第 1 期 Journal of Shenzhen Polytechnic No.1, 2011 全 国 国 际 商 务 英 语 考 试 考 场 编 排 算 法 的 设 计 及 实 现 陈 锐 浩 ( 深 圳 职 业 技 术 学 院 教 育 技 术 与 信 息 中 心, 广 东 深 圳 518055) 摘 要 : 根 据 全 国 国 际 商 务
<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>
程 序 设 计 实 习 INFO130048 3-2.C++ 面 向 对 象 程 序 设 计 重 载 继 承 多 态 和 聚 合 复 旦 大 学 计 算 机 科 学 与 工 程 系 彭 鑫 [email protected] 内 容 摘 要 方 法 重 载 类 的 继 承 对 象 引 用 和 拷 贝 构 造 函 数 虚 函 数 和 多 态 性 类 的 聚 集 复 旦 大 学 计 算 机 科 学
OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料
OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: [email protected] 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP
mvc
Build an application Tutor : Michael Pan Application Source codes - - Frameworks Xib files - - Resources - ( ) info.plist - UIKit Framework UIApplication Event status bar, icon... delegation [UIApplication
基于CDIO一体化理念的课程教学大纲设计
Java 语 言 程 序 设 计 课 程 教 学 大 纲 Java 语 言 程 序 设 计 课 程 教 学 大 纲 一 课 程 基 本 信 息 1. 课 程 代 码 :52001CC022 2. 课 程 名 称 :Java 语 言 程 序 设 计 3. 课 程 英 文 名 称 :Java Programming 4. 课 程 类 别 : 理 论 课 ( 含 实 验 上 机 或 实 践 ) 5. 授
4.1 AMI MQSeries API AMI MQI AMI / / AMI JavaC C++ AMI / AMI AMI - / /
4 AMI AMI AMI SC345604 89 4.1 AMI MQSeries API AMI MQI AMI / / AMI JavaC C++ AMI / AMI AMI - / / 91 41-90 41 AMI - AMI - - API MQI MQSeries MQI AMI IBM 91 MQSeries REPOSITORY AMI AMI AMI XML Windows AMI
untitled
JavaEE+Android - 6 1.5-2 JavaEE web MIS OA ERP BOSS Android Android Google Map office HTML CSS,java Android + SQL Sever JavaWeb JavaScript/AJAX jquery Java Oracle SSH SSH EJB+JBOSS Android + 1. 2. IDE
INTRODUCTION TO COM.DOC
How About COM & ActiveX Control With Visual C++ 6.0 Author: Curtis CHOU [email protected] This document can be freely release and distribute without modify. ACTIVEX CONTROLS... 3 ACTIVEX... 3 MFC ACTIVEX
建立Android新專案
Android 智 慧 型 手 機 程 式 設 計 Android WebService 建 國 科 技 大 學 資 管 系 饒 瑞 佶 2012/4 V1 2012/8 V2 2013/5 V3 2014/10 v4 提 醒 這 節 的 內 容 針 對 的 是 MS 的 Web Service 或 是 使 用 SOAP(Simple Object Access Protocol) 標 準 建 立
Microsoft Word - 三峽鎮衛生所_3_-張家宸.李永繁.doc
暑 期 社 區 醫 學 見 習 報 告 見 習 單 位 : 台 北 縣 三 峽 鎮 衛 生 所 見 習 日 期 :8/22~8/26 見 習 組 員 姓 名 ( 學 號 ):491940011 張 家 宸 491940499 李 永 繁 一 前 言 : 衛 生 所 是 推 行 公 共 衛 生 的 第 一 線, 也 是 最 基 層 的 醫 療 照 護 機 構, 尤 其 是 在 一 些 偏 遠 的 地
