C# (CSharp) ADODB.Command示例
2022/1/9 17:33:52
本文主要是介绍C# (CSharp) ADODB.Command示例,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
示例一
///<summary> /// Execute a stocked procedure. /// <param name="schema"> /// <see cref="SharpQuery.SchemaClass">SchemaClass</see> object. /// </param> /// <param name="rows"> /// Maximum number of row to extract. If is "0" then all rows are extracted. /// </param> /// <returns> return a <see cref="System.Data.DataTable">DataTable</see> ///or a <see cref="System.Data.DataSet">DataSet</see> object. /// </returns> /// </summary> public override object ExecuteProcedure(ISchemaClass schema, int rows, SharpQuerySchemaClassCollection parameters) { DataTable table = null; if (schema == null) { throw new System.ArgumentNullException("schema"); } ADODB.Recordset record = null; ADODB.Command command = new ADODB.Command(); command.ActiveConnection = this.pADOConnection; ADODB.Parameter para = null; command.CommandText = schema.Name; command.CommandType = ADODB.CommandTypeEnum.adCmdStoredProc; if (parameters != null) { foreach (SharpQueryParameter classParam in parameters) { para = new ADODB.Parameter(); para.Type = DbTypeToDataType(classParam.DataType); para.Direction = ParamDirectionToADODirection(classParam.Type); para.Name = classParam.Name; if (para.Name.StartsWith("[")) { para.Name = para.Name.Remove(0, 1); } if (para.Name.EndsWith("]")) { para.Name = para.Name.Remove(para.Name.Length - 1, 1); } para.Value = classParam.Value; command.Parameters.Append(para); } } this.pADOConnection.BeginTrans(); try { record = (ADODB.Recordset)command.GetType().InvokeMember( "Execute", System.Reflection.BindingFlags.InvokeMethod, null, command, null); //record.MaxRecords = rows; table = RecordSetToDataTable(record); //Procedure is ReadOnly table.DefaultView.AllowDelete = false; table.DefaultView.AllowEdit = false; table.DefaultView.AllowNew = false; } catch (System.Exception e) { if (schema != null) { this.pADOConnection.RollbackTrans(); string mes = schema.Name + "\n\r"; foreach (ADODB.Error err in this.pADOConnection.Errors) { mes += "-----------------\n\r"; mes += err.Description + "\n\r"; mes += err.NativeError + "\n\r"; } throw new ExecuteProcedureException(mes); } else { throw new ExecuteProcedureException(e.Message); } } this.pADOConnection.CommitTrans(); return table; }
示例2
static void Main(string[] args) { ADODB.Connection conn = null; ADODB.Recordset rs = null; try { //////////////////////////////////////////////////////////////////////////////// // 连接数据源. // Console.WriteLine("正在连接数据库 ..."); // 获取连接字符串 string connStr = string.Format("Provider=SQLOLEDB;Data Source={0};Initial Catalog={1};Integrated Security=SSPI", ".\\sqlexpress", "SQLServer2005DB"); // 打开连接 conn = new ADODB.Connection(); conn.Open(connStr, null, null, 0); //////////////////////////////////////////////////////////////////////////////// // 编写并执行ADO命令. // 可以是SQL指令(SELECT/UPDATE/INSERT/DELETE),或是调用存储过程. // 此处是一个INSERT命令示例. // Console.WriteLine("将一条记录插入表CountryRegion中..."); // 1. 生成一个Command对象 ADODB.Command cmdInsert = new ADODB.Command(); // 2. 将连接赋值于命令 cmdInsert.ActiveConnection = conn; // 3. 设置命令文本 // SQL指令或者存储过程名 cmdInsert.CommandText = "INSERT INTO CountryRegion(CountryRegionCode, Name, ModifiedDate)" + " VALUES (?, ?, ?)"; // 4. 设置命令类型 // ADODB.CommandTypeEnum.adCmdText 用于普通的SQL指令; // ADODB.CommandTypeEnum.adCmdStoredProc 用于存储过程. cmdInsert.CommandType = ADODB.CommandTypeEnum.adCmdText; // 5. 添加参数 // CountryRegionCode (nvarchar(20)参数的添加 ADODB.Parameter paramCode = cmdInsert.CreateParameter( "CountryRegionCode", // 参数名 ADODB.DataTypeEnum.adVarChar, // 参数类型 (nvarchar(20)) ADODB.ParameterDirectionEnum.adParamInput, // 参数类型 20, // 参数的最大长度 "ZZ"+DateTime.Now.Millisecond); // 参数值 cmdInsert.Parameters.Append(paramCode); // Name (nvarchar(200))参数的添加 ADODB.Parameter paramName = cmdInsert.CreateParameter( "Name", // 参数名 ADODB.DataTypeEnum.adVarChar, // 参数类型 (nvarchar(200)) ADODB.ParameterDirectionEnum.adParamInput, // 参数传递方向 200, // 参数的最大长度 "Test Region Name"); // 参数值 cmdInsert.Parameters.Append(paramName); // ModifiedDate (datetime)参数的添加 ADODB.Parameter paramModifiedDate = cmdInsert.CreateParameter( "ModifiedDate", // 参数名 ADODB.DataTypeEnum.adDate, // 参数类型 (datetime) ADODB.ParameterDirectionEnum.adParamInput, // 参数传递方向 -1, // 参数的最大长度 (datetime忽视该值) DateTime.Now); // 参数值 cmdInsert.Parameters.Append(paramModifiedDate); // 6. 执行命令 object nRecordsAffected = Type.Missing; object oParams = Type.Missing; cmdInsert.Execute(out nRecordsAffected, ref oParams, (int)ADODB.ExecuteOptionEnum.adExecuteNoRecords); //////////////////////////////////////////////////////////////////////////////// // 使用Recordset对象. // http://msdn.microsoft.com/en-us/library/ms681510.aspx // Recordset表示了数据表中记录或执行命令获得的结果的集合。 // 在任何时候, Recordset对象都指向集合中的单条记录,并将 // 该记录作为它的当前记录。 // Console.WriteLine("列出表CountryRegion中的所有记录"); // 1. 生成Recordset对象 rs = new ADODB.Recordset(); // 2. 打开Recordset对象 string strSelectCmd = "SELECT * FROM CountryRegion"; // WHERE ... rs.Open(strSelectCmd, // SQL指令/表,视图名 / // 存储过程调用 /文件名 conn, // 连接对象/连接字符串 ADODB.CursorTypeEnum.adOpenForwardOnly, // 游标类型. (只进游标) ADODB.LockTypeEnum.adLockOptimistic, // 锁定类型. (仅当需要调用 // 更新方法时,才锁定记录) (int)ADODB.CommandTypeEnum.adCmdText); // 将第一个参数视为SQL命令 // 或存储过程. // 3. 通过向前移动游标列举记录 // 移动到Recordset中的第一条记录 rs.MoveFirst(); while (!rs.EOF) { // 当在表中定义了一个可空字段,需要检验字段中的值是否为DBNull.Value. string code = (rs.Fields["CountryRegionCode"].Value == DBNull.Value) ? "(DBNull)" : rs.Fields["CountryRegionCode"].Value.ToString(); string name = (rs.Fields["Name"].Value == DBNull.Value) ? "(DBNull)" : rs.Fields["Name"].Value.ToString(); DateTime modifiedDate = (rs.Fields["ModifiedDate"].Value == DBNull.Value) ? DateTime.MinValue : (DateTime)rs.Fields["ModifiedDate"].Value; Console.WriteLine(" {2} \t{0}\t{1}", code, name, modifiedDate.ToString("yyyy-MM-dd")); // 移动到下一条记录 rs.MoveNext(); } } catch (Exception ex) { Console.WriteLine("应用程序出现错误: {0}", ex.Message); if (ex.InnerException != null) Console.WriteLine("描述: {0}", ex.InnerException.Message); } finally { //////////////////////////////////////////////////////////////////////////////// // 退出前清理对象. // Console.WriteLine("正在关闭连接 ..."); // 关闭record set,当它处于打开状态时 if (rs != null && rs.State == (int)ADODB.ObjectStateEnum.adStateOpen) rs.Close(); // 关闭数据库连接,当它处于打开状态时 if (conn != null && conn.State == (int)ADODB.ObjectStateEnum.adStateOpen) conn.Close(); } }
这篇关于C# (CSharp) ADODB.Command示例的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-12-06使用Microsoft.Extensions.AI在.NET中生成嵌入向量
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#