因存储过程参数类型不匹配而造成OleDbCommand的不可用(一) (转)[通俗易懂]

因存储过程参数类型不匹配而造成OleDbCommand的不可用(一) (转)[通俗易懂]因存储过程参数类型不匹配而造成OleDbCommand的不可用(一)(转)[@more@]因存储过程参数类型不匹配而造成OledbCommand的不可用XML:namespaceprefix=ons=”urn:…

大家好,又见面了,我是你们的朋友全栈君。

因存储过程参数类型不匹配而造成OleDbCommand的不可用(一) (转)[@more@]

存储过程参数类型不匹配而造成OledbCommand的不可用XML:namespace prefix = o ns = “urn:schemas-microsoft-com:Office:office” />

Key words:

  Stored Procedure/OleDbCommand/ado.NET/Parameter/Type/存储过程/参数/类型

  在讨论OleDbCommand出错之前,还是想了解以下OleDbCommand一些运行机制。在数据库里面有如下存储过程:

ALTER PROCEDURE dbo.Test

@Name  nvarchar(50),

@Age  smallint

AS

select @Name, @Age

使用以下代码调用,并用Watch监视OleDbCommand实例的内存状况:

using System;

using System.Data;

using System.Data.OleDb;

namespace testCommand

{

  class Class1

  {

  [STAThread]

  static void Main(string[] args)

  {

  OleDbConnection conn=new OleDbConnection(“xxx”);

  conn.Open();

  OleDbCommand comm=new OleDbCommand(“Test”,conn);

  comm.CommandType=CommandType.StoredProcedure;

  OleDbCommandBuilder.DeriveParameters(comm);

  try

  {

  comm.Parameters[“Name”].Value=”my name”;

  comm.Parameters[“Age”].Value=(object)11;

    comm.ExecuteNonQuery();  //断点一,此处内存状况见表一

  }

  catch(Exception err)

  {

  Console.WriteLine(

  err.TargetSite+” — “+err.StackTrace+” — “+

  err.source+” — “+err.Message+” — “+

  err.GetType().ToString());

  }

  try

  {

  comm.Parameters[“Name”].Value=”my name”;

  comm.Parameters[“Age”].Value=(object)11;

  comm.ExecuteNonQuery();  //断点二,此处内存状况见表二

  }

  catch(Exception err)

  {

  Console.WriteLine(

  err.TargetSite+” — “+err.StackTrace+” — “+

  err.Source+” — “+err.Message+” — “+

  err.GetType().ToString());

  }

  conn.Close();

  }

  }

}

表格一,断点一处的内存状况

comm

{System.Data.OleDb.OleDbCommand}

System.Data.OleDb.OleDbCommand

transaction

null

System.Data.OleDb.OleDbTransaction

cmdText

Test

string

cmdType

StoredProcedure

System.Data.CommandType

updatedRowSource

Both

System.Data.UpdateRowSource

commandTimeout

30

int

icommandText

null

System.Data.Common.UnsafeNativeMethods.ICommandText

handle_Accessor

0

int

commandBehavior

Default

System.Data.CommandBehavior

dbBindings

null

System.Data.OleDb.DBBindings

canceling

FALSE

bool

isPrepared

FALSE

bool

executeQuery

FALSE

bool

computedParameters

FALSE

bool

designTimeVisible

FALSE

bool

cmdState

0

int

recordsAffected

0

int

CommandText

Test

string

CommandTimeout

30

int

CommandType

StoredProcedure

System.Data.CommandType

DesignTimeVisible

TRUE

bool

IsClosed

TRUE

bool

Transaction

null

System.Data.OleDb.OleDbTransaction

UpdatedRowSource

Both

System.Data.UpdateRowSource

 

余下内容见 ASP?id=18427″>因存储过程参数类型不匹配而造成OleDbCommand的不可用(二)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752019/viewspace-956640/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10752019/viewspace-956640/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144606.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 别人的收藏_自己的qq收藏别人是否能看到

    别人的收藏_自己的qq收藏别人是否能看到0DAY 0daydivxz数据库0dayGamezHowtotellNFOrceEntertainmentTLF0DayCheckIndexTLF资讯网UGiA0daysearchengine_2002-2005梦幻0Day~game阿拉下载龙族-北京站-MCSYSTEM2004 BBS  下载论坛

    2022年10月8日
    3
  • winhttp 发送 get 请求「建议收藏」

    winhttp 发送 get 请求「建议收藏」由于微端要和服务器交互,而服务器又只有http协议的处理,所以需要用C++来模拟get或post请求。这是使用windowsapi来模拟get请求的,使用到的库有“winhttp”,头文件有“winhttp.h”,下面的代码来源于http://msdn.microsoft.com:12345678

    2022年7月27日
    9
  • 云计算软件有哪些_to B 工具

    云计算软件有哪些_to B 工具三大云安全工具(CASB、CSPM、CWPP)的使用场景近年来,随着云计算市场的发展,不少企业都开始选择业务上云,并且企业并不只是采用一种云,而是采用多种云相互结合的方式,例如,公有云、私有云、混合云等等。企业采用多云方式已发展为主流趋势。然而,业务上云之后也并非一劳永逸。由于云安全策略的制定总是滞后于云服务的使用,存储在云中的客户数据的泄露风险也相应增加。国内外的类似安全事件也层出不穷,例如今年,AWS托管的CapitalOne美国和加拿大1.06亿客户的个人数据发生泄露。下图比较形象地展示出,

    2025年5月25日
    4
  • Qt中使用Json

    Qt中使用Json

    2021年11月19日
    66
  • .NET(c#) 移动APP开发平台 – Smobiler(1)

    .NET(c#) 移动APP开发平台 – Smobiler(1)如果说基于.net的移动开发平台,目前比较流行的可能是xamarin了,不过除了这个,还有一个比xamarin更好用的国内的.net移动开发平台,smobiler,不用学习另外一套开发模式或者搭建复杂的开发环境,smobiler能够让大家像开发传统windows一样去开发移动应用,那么列举一下这个平台的特点。1. 基于VisualStudio的可视化开发。如同开发传统Windows平台一样的…

    2022年5月6日
    168
  • 标志寄存器EFLAGS中的IF标志可以屏蔽MINI中断相应_cpsr寄存器标志位

    标志寄存器EFLAGS中的IF标志可以屏蔽MINI中断相应_cpsr寄存器标志位EFL介绍EFL的所有标志全称如上图所示,前8位(0~7)因为用不到,所以不作介绍,想看的可以点击原文链接。状态控制位1.追踪标志位TF(TrapFlag)当追踪标志TF被置为1时,CPU进入单步执行方式,即每执行一条指令,产生一个单步中断请求。这种方式主要用于程序的调试。指令系统中没有专门的指令来改变标志位TF的值,但可直接通过文末介绍的方法来进行修改。2.中断允许标志位…

    2025年6月20日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号