if (command == null) throw new ArgumentNullException("command"); if (commandparameters!= null) foreach (SqlParameter p in commandparameters) if (p!= n

Size: px
Start display at page:

Download "if (command == null) throw new ArgumentNullException("command"); if (commandparameters!= null) foreach (SqlParameter p in commandparameters) if (p!= n"

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); /// 执行指定数据库事务的命令, 映射数据表并填充数据集, 指定参数.

教案模板4-2

教案模板4-2 传 智 播 客 ASP.NET 就 业 实 例 教 程 教 学 设 计 课 程 名 称 :ASP.NET 就 业 实 例 教 程 授 课 年 级 : 2015 年 级 授 课 学 期 : 2015 学 年 第 二 学 期 教 师 姓 名 : 某 某 老 师 2015 年 02 月 02 日 课 题 名 称 第 2 章 ADO.NET 计 划 学 时 6 课 时 内 容 分 析 教 学 目 标 及 基

More information

ASP.NET实现下拉框二级联动组件

ASP.NET实现下拉框二级联动组件 ASP.NET 实现下拉框二级联动组件 namespace WebApplicationDlh using System.Drawing; using System.Web; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using Db; / / Area 的摘要说明 /

More information

ASP

ASP ASP.NET 三层架构详解 Power By: Tian 一 数据库 /*==========================================*/ /* DBMS name: Microsoft SQL Server 2000 */ /*==========================================*/ if exists (select 1 from sysobjects

More information

untitled

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

More information

untitled

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

More information

2 ADO.NET Internet 1.2

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

More information

untitled

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

More information

untitled

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 料

More information

<463A5CC2A4B6ABD1A7D4BA5CBDCCD1A7D6B8C4CFD7DC5CA1B656697375616C20432320B3CCD0F2C9E8BCC6A1B7BFCEB3CCD6B8C4CF2E646F63>

<463A5CC2A4B6ABD1A7D4BA5CBDCCD1A7D6B8C4CFD7DC5CA1B656697375616C20432320B3CCD0F2C9E8BCC6A1B7BFCEB3CCD6B8C4CF2E646F63> 目 录 Visual C# 程 序 设 计 课 程 指 南 计 算 机 科 导 论 课 程 指 南 8 计 算 机 网 络 基 础 课 程 指 南 4 网 络 工 程 课 程 设 计 课 程 指 南 0 网 络 应 用 与 实 践 课 程 指 南 4 ADO.net 课 程 指 南 7 C 程 序 设 计 课 程 指 南 数 字 信 号 处 理 DSP 课 程 指 南 9 电 子 电 路 EDA 技

More information

前言 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# 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

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

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" 一些

More information

第一章 章标题-F2 上空24,下空24

第一章 章标题-F2 上空24,下空24 Web 9 XML.NET Web Web Service Web Service Web Service Web Service Web Service ASP.NET Session Application SOAP Web Service 9.1 Web Web.NET Web Service Web SOAP Simple Object Access Protocol 9.1.1 Web Web

More information

untitled

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

More information

untitled

untitled Inside ASP.NET 2.0- ASP.NET 1.1 2. 理念 讀 了 了 度 讀 了 理 類 來 來說 流 了 來 來 來 來 理 來 不 讀 不 不 力 來參 流 讀 了 異 行 來了 錄 行 不 了 來 了 來 行 論說 了 更 不 例 來了 力 行 樂 不 說 兩 例 利 來 了 來 樂 了 了 令 讀 來 不 不 來 了 不 旅行 令 錄 錄 來 了 例 來 利 來 ManagerProvide

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

untitled

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

More information

( 含 要 ) 1-2 用 或 雇 用, 抑 或 有 無 俸 給 文 職 或 武 職, 政 官 或 事 官 均 屬 之, 其 不 以 具 備 人 資 格 為 限, 因 此 屬 於 最 廣 義 之 念 四 廣 義 念 之 依 服 24 條 之 規 定 : 本 於 受 有 俸 給 之 文 武 職, 及

( 含 要 ) 1-2 用 或 雇 用, 抑 或 有 無 俸 給 文 職 或 武 職, 政 官 或 事 官 均 屬 之, 其 不 以 具 備 人 資 格 為 限, 因 此 屬 於 最 廣 義 之 念 四 廣 義 念 之 依 服 24 條 之 規 定 : 本 於 受 有 俸 給 之 文 武 職, 及 本 學 習 重 點 研 讀 首 先 應 釐 清 不 同 規 對 與 職 人 念 的 定 義, 其 中 之 定 義 從 最 廣 義 廣 義 狹 義 到 最 狹 義 的 人, 都 會 牽 涉 到 規 適 用 上 的 不 同, 而 職 人 涵 蓋 範 圍 比 更 廣, 讀 者 應 注 意 兩 者 之 間 的 區 別 建 議 讀 者 與 考 生 於 開 始 研 讀 之 際, 利 用 本 之 內 容 確 實

More information

Microsoft Word - ch04三校.doc

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

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

《大话设计模式》第一章

《大话设计模式》第一章 第 1 章 代 码 无 错 就 是 优? 简 单 工 厂 模 式 1.1 面 试 受 挫 小 菜 今 年 计 算 机 专 业 大 四 了, 学 了 不 少 软 件 开 发 方 面 的 东 西, 也 学 着 编 了 些 小 程 序, 踌 躇 满 志, 一 心 要 找 一 个 好 单 位 当 投 递 了 无 数 份 简 历 后, 终 于 收 到 了 一 个 单 位 的 面 试 通 知, 小 菜 欣 喜

More information

untitled

untitled 1 行 行 行 行.NET 行 行 類 來 行 行 Thread 類 行 System.Threading 來 類 Thread 類 (1) public Thread(ThreadStart start ); Name 行 IsAlive 行 行狀 Start 行 行 Suspend 行 Resume 行 行 Thread 類 (2) Sleep 行 CurrentThread 行 ThreadStart

More information

PowerPoint Template

PowerPoint Template RedGres MSSQL 到 PostgreSQL 的应用迁移 Migration Application from MSSQL to PostgreSQL Jerray.Huang 主要内容 1. 2. 3. 4. 迁移总体分析 数据迁移 - 类型与函数 语法与存储过程迁移 数据提供程序迁移 为什么要迁移 操作系统的问题 版权问题 经济问题 稳定性问题 客户要求 政府要求 硬件升级 其它 MS-SQL

More information

untitled

untitled 1 Outline 料 類 說 Tang, Shih-Hsuan 2006/07/26 ~ 2006/09/02 六 PM 7:00 ~ 9:30 聯 ives.net@gmail.com www.csie.ntu.edu.tw/~r93057/aspnet134 度 C# 力 度 C# Web SQL 料 DataGrid DataList 參 ASP.NET 1.0 C# 例 ASP.NET 立

More information

( 总 第 1073 期 ) 浙 江 省 人 民 政 府 主 办 2015 年 3 月 17 日 出 版 省 政 府 令 省 政 府 文 件 目 录 浙 江 省 大 型 群 众 性 活 动 安 全 管 理 办 法 ( 浙 江 省 人 民 政 府 令 第 333 号 ) (3) 浙 江 省 人 民 政

( 总 第 1073 期 ) 浙 江 省 人 民 政 府 主 办 2015 年 3 月 17 日 出 版 省 政 府 令 省 政 府 文 件 目 录 浙 江 省 大 型 群 众 性 活 动 安 全 管 理 办 法 ( 浙 江 省 人 民 政 府 令 第 333 号 ) (3) 浙 江 省 人 民 政 ( 总 第 1073 期 ) 浙 江 省 人 民 政 府 主 办 2015 年 3 月 17 日 出 版 省 政 府 令 省 政 府 文 件 目 录 浙 江 省 大 型 群 众 性 活 动 安 全 管 理 办 法 ( 浙 江 省 人 民 政 府 令 第 333 号 ) (3) 浙 江 省 人 民 政 府 关 于 命 名 第 一 批 省 级 生 态 市 第 七 批 省 级 生 态 县 ( 市 区 )

More information

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

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

More information

(Microsoft PowerPoint -

(Microsoft PowerPoint - Windows 程式設計 ADO.NET 資料存取 ( 一 ) 講師 : 林賢達 Peter.lin@imestech.com 課程大綱 安裝 SQL Server 2005 Express Edition RDBMS 基礎概念 測試資料庫簡介 ADO.NET 概述 Connection 物件與 Command 物件 Parameters 集合物件 DataReader 物件 資料繫結 RDBMS

More information

Microsoft Office SharePoint Server MOSS Web SharePoint Web SharePoint 22 Web SharePoint Web Web SharePoint Web Web f Lists.asmx Web Web CAML f

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

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

概述

概述 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

More information

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF

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

More information

第一章 基本概念

第一章 基本概念 学习目标 : 掌握用数据库实现用户登录的编程基本原理 掌握 ADO.NET 精髓 掌握 C# 访问数据库的基本原理 掌握登录模块的编写方法 掌握增删改模块的编写原理 第 2 章为了入门的方便, 一步一步实现了登录模块 软件是由程序和数据组成的, 但前面登录模块中的数据是固定的字符串常量, 用户名和密码是固定的值, 而一般数据都放在数据库中 本章主要介绍带数据库的登录程序和增删改模块的编写原理 在 C#

More information

基于ECO的UML模型驱动的数据库应用开发1.doc

基于ECO的UML模型驱动的数据库应用开发1.doc ECO UML () Object RDBMS Mapping.Net Framework Java C# RAD DataSetOleDbConnection DataGrod RAD Client/Server RAD RAD DataReader["Spell"].ToString() AObj.XXX bug sql UML OR Mapping RAD Lazy load round trip

More information

chp6.ppt

chp6.ppt Java 软 件 设 计 基 础 6. 异 常 处 理 编 程 时 会 遇 到 如 下 三 种 错 误 : 语 法 错 误 (syntax error) 没 有 遵 循 语 言 的 规 则, 出 现 语 法 格 式 上 的 错 误, 可 被 编 译 器 发 现 并 易 于 纠 正 ; 逻 辑 错 误 (logic error) 即 我 们 常 说 的 bug, 意 指 编 写 的 代 码 在 执 行

More information

新版 明解C++入門編

新版 明解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,

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

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. 注意 "," 后面有一个空格,"." 结束,

More information

Microsoft PowerPoint - ch6 [相容模式]

Microsoft PowerPoint - ch6 [相容模式] UiBinder wzyang@asia.edu.tw 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

More information

投影片 1

投影片 1 資料庫管理程式 ( 補充教材 -Part2) 使用 ADO.NET 連結資料庫 ( 自行撰寫程式碼 以實現新增 刪除 修改等功能 ) Private Sub InsertButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InsertButton.Click ' 宣告相關的 Connection

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Java application Java main applet Web applet Runnable Thread CPU Thread 1 Thread 2 Thread 3 CUP Thread 1 Thread 2 Thread 3 ,,. (new) Thread (runnable) start( ) CPU (running) run ( ) blocked CPU sleep(

More information

38 47995529 威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 1059003070 號 39 47995534 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

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 獨 資 詹 安 平

More information

Microsoft Word - 第9章 ASP.NET操作数据库.doc

Microsoft Word - 第9章 ASP.NET操作数据库.doc 第 9 章 ASP.NET 操作数据库 通过对 ADO.NET 的基本讲解, 以及讲解了一些数据源控件的基本用法后, 本章将介绍一些 ASP.NET 操作数据库的高级用法, 包括使用 SQLHelper 以及数据源控件对数据的操作 本章是对前面的数据库知识的一种补充和提升 9.1 使用 ADO.NET 操作数据库 上一章中介绍了 ADO.NET 的基本概念 ADO.NET 的对象, 以及如何使用 ADO.NET

More information

EJB-Programming-4-cn.doc

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

More information

untitled

untitled 1 Outline ArrayList 類 列類 串類 類 類 例 理 MSDN Library MSDN Library 量 例 參 列 [ 說 ] [] [ 索 ] [] 來 MSDN Library 了 類 類 利 F1 http://msdn.microsoft.com/library/ http://msdn.microsoft.com/library/cht/ Object object

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com 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

More information

<4D F736F F D20CAFDBEDDBFE2C1ACBDD3BDB2D2E52E646F63>

<4D F736F F D20CAFDBEDDBFE2C1ACBDD3BDB2D2E52E646F63> 数据库连接 目标 : 熟练掌握 connection,command, DataReader, DataSet 类进行数据库连接. 重点 : 数据读取器, 和数据集的使用. 难点 : 数据集数据的填充. 一 ADO.net 概述 ADO.NET 是新一代 Microsoft ActiveX 数据对象 (ADO), 它是一种应用程序编程界面 (API), 可用来创建分布式的数据共享应用程序 尽管 ADO.NET

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 70-523 Title : UPG:Transition MCPD.NET Frmwrk 3.5 Web Dev to 4 Web Dev Version : Demo 1 / 13 1.You use Microsoft Visual Studio 2010 and Microsoft.NET

More information

第10章 数据库开发技术

第10章 数据库开发技术 第 10 章数据库开发技术 数据库技术在当前的软件开发中得到了广泛的应用,.NET 为应用程序访问数据库提供了友好而强大的支持 本章主要介绍在 C# 中访问数据库的技巧 在本章的学习过程中, 要注意在 C# 中以编程的方式访问数据库时, 无论该数据库是哪一家的产品 多大的规模 无论在本地还是远端, 对它们的访问方式都是一样的, 都可以用同样的技术来实现 学习目标 1. 回顾数据库基础知识, 了解常用的

More information

EJB-Programming-3.PDF

EJB-Programming-3.PDF :, JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Value Object Design Pattern J2EE Design Patterns Value Object Value Object Factory J2EE EJB Test Client

More information

Microsoft Word - A doc

Microsoft Word - A doc 使用 ASP.NET 技术实现 BLOB 类型数据存取的研究 陈少平, 方子帆, 舒文辉三峡大学机械与材料学院, 湖北宜昌 (443002) E-mail:fzf@ctgu.edu.cn 摘要 : 通过对 ADO.NET 技术的数据模型分析研究与特点概述, 提出了对数据库中 BLOB 类型的数据进行存取的实现方法 结合具体实例, 说明在 Web 数据库系统中, 如何运用 ASP.NET 技术实现 Oracle

More information

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

(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

More information

Microsoft PowerPoint - string_kruse [兼容模式]

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.

More information

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 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

More information

untitled

untitled 1 MSDN Library MSDN Library 量 例 參 列 [ 說 ] [] [ 索 ] [] 來 MSDN Library 了 類 類 利 F1 http://msdn.microsoft.com/library/ http://msdn.microsoft.com/library/cht/ Object object 參 類 都 object 參 object Boxing 參 boxing

More information

chap07.key

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 标识符逗号分隔,

More information

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

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

More information

「西醫基層總額支付委員會《第28次委員會議紀錄

「西醫基層總額支付委員會《第28次委員會議紀錄 西 醫 基 層 總 額 支 付 委 員 會 101 年 第 2 次 委 員 會 議 紀 錄 時 間 :101 年 5 月 23 日 下 午 2 時 地 點 : 中 央 健 康 保 險 局 18 樓 會 議 室 ( 台 北 市 信 義 路 3 段 140 號 18 樓 ) 主 席 : 黃 召 集 人 三 桂 出 席 委 員 : 王 委 員 正 坤 王 委 員 錦 基 古 委 員 博 仁 王 正 坤 王

More information

untitled

untitled 4.1AOP AOP Aspect-oriented programming AOP 來說 AOP 令 理 Cross-cutting concerns Aspect Weave 理 Spring AOP 來 AOP 念 4.1.1 理 AOP AOP 見 例 來 例 錄 Logging 錄 便 來 例 行 留 錄 import java.util.logging.*; public class HelloSpeaker

More information

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

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

More information

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

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

More information

<ADB6ADB1C25EA8FAA6DB2D4D56432E706466>

<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

More information

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

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

More information

Microsoft Word - Learn Objective-C.doc

Microsoft Word - Learn Objective-C.doc Learn Objective C http://cocoadevcentral.com/d/learn_objectivec/ Objective C Objective C Mac C Objective CC C Scott Stevenson [object method]; [object methodwithinput:input]; output = [object methodwithoutput];

More information

,, 1 ( ) 1 / CurrentSeries Int ConnectionString CString Style3D BOOL IsContinue Graph BOOL LegendType Int SeriesName CString SeriesColor OL E

,, 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

More information

untitled

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

More information

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

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

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc 本章学习目标 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 配置视图解析器 @RequestMapping 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc 和 Struts2 都属于表现层的框架, 它是 Spring 框架的一部分, 我们可 以从 Spring 的整体结构中看得出来 :

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

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

More information

1.5招募说明书(草案)

1.5招募说明书(草案) PUBLIC 2014 1 PUBLIC - 1 2014 1 PUBLIC - 2 2014 1 PUBLIC - 3 2014 1 PUBLIC - 4 2014 1 PUBLIC - 5 2014 1 PUBLIC - 6 2014 1 PUBLIC - 7 2014 1 PUBLIC - 8 2014 1 PUBLIC - 9 2014 1 PUBLIC - 10 2014 1 PUBLIC

More information

第3章.doc

第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

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 310-055Big5 Title : Sun Certified Programmer for the Java 2 Platform.SE 5.0 Version : Demo 1 / 22 1. 11. public static void parse(string str)

More information

《C#基础入门》课程教学大纲

《C#基础入门》课程教学大纲 ASP.NET 就业实例教程 课程教学大纲 ( 课程英文名称 ) 课程编号 : 学 分 :5 学分 学时 :40 学时 ( 其中 : 讲课学时 :24 上机学时 :16) 先修课程 :C# 程序设计 SQL Server 数据库 网页设计与制作后续课程 : 适用专业 : 信息及其计算机相关专业开课部门 : 计算机系 一 课程的性质与目标 ASP.NET 就业实例教程 是面向计算机相关专业的一门专业实训课,

More information

ebook39-5

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

More information

ADO.NET 資料庫存取架構

ADO.NET 資料庫存取架構 資料庫離線存取模式 建國科技大學資管系饒瑞佶 ADO.NET 資料庫存取架構 DataSet DataSet 是一個放在記憶體中的資料結構 將資料庫的結構與資料複製到記憶體中, 用表格的方式來儲存 減少資料庫負擔與增加存取效率 容易進行取得 傳遞與顯示裡面的資料 需要額外的同步機制 記憶體 DataAdapter Command Connection DB Product Price Quantity

More information

提问袁小兵:

提问袁小兵: C++ 面 试 试 题 汇 总 柯 贤 富 管 理 软 件 需 求 分 析 篇 1. STL 类 模 板 标 准 库 中 容 器 和 算 法 这 部 分 一 般 称 为 标 准 模 板 库 2. 为 什 么 定 义 虚 的 析 构 函 数? 避 免 内 存 问 题, 当 你 可 能 通 过 基 类 指 针 删 除 派 生 类 对 象 时 必 须 保 证 基 类 析 构 函 数 为 虚 函 数 3.

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

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

More information

JavaIO.PDF

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

More information

1. 访 问 最 新 发 行 公 告 信 息 jconnect for JDBC 7.0 1. 访 问 最 新 发 行 公 告 信 息 最 新 版 本 的 发 行 公 告 可 以 从 网 上 获 得 若 要 查 找 在 本 产 品 发 布 后 增 加 的 重 要 产 品 或 文 档 信 息, 请 访

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

More information

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 复习 创建对象 构造函数 函数重载 : 函数 = 函数名 + 参数列表 public class MyType { int i; double d; char c; void set(double x)

More information

雲端 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

雲端 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

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

untitled

untitled OGRE http://antsam.blogone.net AntsamCGD@hotmail.com OGRE OGRE listener listener target listener target Dispatcher Processor Input Reader Event class view Event Class view Input Event ctrlaltshift ascoll

More information

IoC容器和Dependency Injection模式.doc

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

More information

ebook39-6

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

More information

Microsoft Word - 陈锐浩.doc

Microsoft Word - 陈锐浩.doc 深 圳 职 业 技 术 学 院 学 报 2011 年 第 1 期 Journal of Shenzhen Polytechnic No.1, 2011 全 国 国 际 商 务 英 语 考 试 考 场 编 排 算 法 的 设 计 及 实 现 陈 锐 浩 ( 深 圳 职 业 技 术 学 院 教 育 技 术 与 信 息 中 心, 广 东 深 圳 518055) 摘 要 : 根 据 全 国 国 际 商 务

More information

Microsoft Word - MIS.doc

Microsoft Word - MIS.doc 成 都 信 息 工 程 学 院 班 务 信 息 系 统 The Management Information System Of the Class Transaction 制 作 人 张 蓓 学 号 2000041113 制 作 单 位 电 子 商 务 系 2000 级 会 本 3 班 定 版 时 间 2003 年 12 月 15 日 前 言 跨 入 21 世 纪 人 类 社 会 正 在 步 入

More information

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074> 程 序 设 计 实 习 INFO130048 3-2.C++ 面 向 对 象 程 序 设 计 重 载 继 承 多 态 和 聚 合 复 旦 大 学 计 算 机 科 学 与 工 程 系 彭 鑫 pengxin@fudan.edu.cn 内 容 摘 要 方 法 重 载 类 的 继 承 对 象 引 用 和 拷 贝 构 造 函 数 虚 函 数 和 多 态 性 类 的 聚 集 复 旦 大 学 计 算 机 科 学

More information

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款 JAVA 程 序 设 计 ( 肆 ) 徐 东 / 数 学 系 使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款 使 用 Java class 代 表 保 险 箱 public class SaveBox 类 名 类 类 体 实 现 封 装 性 使 用 class SaveBox 代 表 保

More information

在 ongodb 中实现强事务

在 ongodb 中实现强事务 在 ongodb 中实现强事务 600+ employees 2,000+ customers 13 offices worldwide 15,000,000+ Downloads RANK DBMS MODEL SCORE GROWTH (20 MO) 1. Oracle Rela+onal DBMS 1,442-5% 2. MySQL Rela+onal DBMS 1,294 2% 3.

More information

一般对数据的操作主要包含最基本的增删查改, 微软为了方便开发人员能够直观的管理数据库中的数据, 提供了一个可视化的管理工具 (SQL Server Management Studio), 方便开发人员来添加和管理数据 但在实际开发中操作数据库都是通过 SQL 语句来实现的, 其基本操作的 SQL 语

一般对数据的操作主要包含最基本的增删查改, 微软为了方便开发人员能够直观的管理数据库中的数据, 提供了一个可视化的管理工具 (SQL Server Management Studio), 方便开发人员来添加和管理数据 但在实际开发中操作数据库都是通过 SQL 语句来实现的, 其基本操作的 SQL 语 第 2 章 ADO.NET 学习目标 将数据显示到界面上 一个网站最重要的作用就是展示数据, 本章节学习的 ADO.NET 就是用来实现在网站中展示数 据库中数据的功能, 在学习过程中需要掌握以下内容 : 能够进行数据的增删查改操作 能够在程序中使用 ADO.NET 对象操作数据库 能够封装 SQLHelper 工具类并在程序中使用 情景导入 张三是一家电子商务公司的网站开发人员, 马上要到 双十一

More information

TradingAlgorithm_log.txt

TradingAlgorithm_log.txt [2018-07-23 22:28:46.884015] INFO: algo: TradingAlgorithm V1.2.1 [2018-07-23 22:28:47.109294] INFO: algo: data.major_axis0: 2017-07-24 00:00:00+00:00 [2018-07-23 22:28:47.112067] INFO: algo: data.major_axis-1:

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

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: 51141201063@ecnu.cn 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP

More information

mvc

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

More information

目 录 第 一 部 分 档 案 局 概 况 一 主 要 职 责 二 部 门 决 算 单 位 构 成 第 二 部 分 档 案 局 2016 年 度 部 门 预 算 表 一 2016 年 度 市 级 部 门 收 支 预 算 总 表 二 2016 年 度 市 级 部 门 支 出 预 算 表 三 2016

目 录 第 一 部 分 档 案 局 概 况 一 主 要 职 责 二 部 门 决 算 单 位 构 成 第 二 部 分 档 案 局 2016 年 度 部 门 预 算 表 一 2016 年 度 市 级 部 门 收 支 预 算 总 表 二 2016 年 度 市 级 部 门 支 出 预 算 表 三 2016 档 案 局 2016 年 度 部 门 预 算 1 目 录 第 一 部 分 档 案 局 概 况 一 主 要 职 责 二 部 门 决 算 单 位 构 成 第 二 部 分 档 案 局 2016 年 度 部 门 预 算 表 一 2016 年 度 市 级 部 门 收 支 预 算 总 表 二 2016 年 度 市 级 部 门 支 出 预 算 表 三 2016 年 度 市 级 部 门 财 政 拨 款 支 出 预

More information

2015 年 度 收 入 支 出 决 算 总 表 单 位 名 称 : 北 京 市 朝 阳 区 卫 生 局 单 位 : 万 元 收 入 支 出 项 目 决 算 数 项 目 ( 按 功 能 分 类 ) 决 算 数 一 财 政 拨 款 168738.36 一 一 般 公 共 服 务 支 出 53.83 二

2015 年 度 收 入 支 出 决 算 总 表 单 位 名 称 : 北 京 市 朝 阳 区 卫 生 局 单 位 : 万 元 收 入 支 出 项 目 决 算 数 项 目 ( 按 功 能 分 类 ) 决 算 数 一 财 政 拨 款 168738.36 一 一 般 公 共 服 务 支 出 53.83 二 2015 年 度 部 门 决 算 报 表 ( 含 三 公 经 费 决 算 ) 2015 年 度 收 入 支 出 决 算 总 表 单 位 名 称 : 北 京 市 朝 阳 区 卫 生 局 单 位 : 万 元 收 入 支 出 项 目 决 算 数 项 目 ( 按 功 能 分 类 ) 决 算 数 一 财 政 拨 款 168738.36 一 一 般 公 共 服 务 支 出 53.83 二 上 级 补 助 收 入

More information

基于CDIO一体化理念的课程教学大纲设计

基于CDIO一体化理念的课程教学大纲设计 Java 语 言 程 序 设 计 课 程 教 学 大 纲 Java 语 言 程 序 设 计 课 程 教 学 大 纲 一 课 程 基 本 信 息 1. 课 程 代 码 :52001CC022 2. 课 程 名 称 :Java 语 言 程 序 设 计 3. 课 程 英 文 名 称 :Java Programming 4. 课 程 类 别 : 理 论 课 ( 含 实 验 上 机 或 实 践 ) 5. 授

More information

4.1 AMI MQSeries API AMI MQI AMI / / AMI JavaC C++ AMI / AMI AMI - / /

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

More information

untitled

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

More information

INTRODUCTION TO COM.DOC

INTRODUCTION TO COM.DOC How About COM & ActiveX Control With Visual C++ 6.0 Author: Curtis CHOU mahler@ms16.hinet.net This document can be freely release and distribute without modify. ACTIVEX CONTROLS... 3 ACTIVEX... 3 MFC ACTIVEX

More information

建立Android新專案

建立Android新專案 Android 智 慧 型 手 機 程 式 設 計 Android WebService 建 國 科 技 大 學 資 管 系 饒 瑞 佶 2012/4 V1 2012/8 V2 2013/5 V3 2014/10 v4 提 醒 這 節 的 內 容 針 對 的 是 MS 的 Web Service 或 是 使 用 SOAP(Simple Object Access Protocol) 標 準 建 立

More information

Microsoft Word - 三峽鎮衛生所_3_-張家宸.李永繁.doc

Microsoft Word - 三峽鎮衛生所_3_-張家宸.李永繁.doc 暑 期 社 區 醫 學 見 習 報 告 見 習 單 位 : 台 北 縣 三 峽 鎮 衛 生 所 見 習 日 期 :8/22~8/26 見 習 組 員 姓 名 ( 學 號 ):491940011 張 家 宸 491940499 李 永 繁 一 前 言 : 衛 生 所 是 推 行 公 共 衛 生 的 第 一 線, 也 是 最 基 層 的 醫 療 照 護 機 構, 尤 其 是 在 一 些 偏 遠 的 地

More information