问题标签 [idbcommand]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1674 浏览

c# - 如何获取到 DB 的 IDbCommand 输出?(。网)

我有一个 SqlCommand 对象,我执行它的 ExecuteNonQuery 方法。查询失败,但我看不到如何获取查询来调试它。你可以帮帮我吗?

更新我目前正在使用 Wireshark (tcpdump) 来读取命令,但我认为这不是最好的解决方案

更新CommandText 属性仅提供存储过程名称。我想要带有参数的整个命令。

0 投票
2 回答
2082 浏览

c# - 有没有办法使用通用 DbCommand 进行异步更新?

当使用通用 DbCommand 执行更新时,如果正在更新的行被锁定,它将无限期挂起。

使用的底层连接是 Devart 的 Oracle 提供者,Devart.Data.Oracle.OracleConnection

设置 DbCommand.CommandTimeOut 完全没有效果,更新永远不会超时。

DbCommand 没有实现 BeginExecuteNonQuery,所以似乎没有办法以异步方式使用 DbConnection/DbCommand。

我可以通过使用 Devart 的 OracleCommand 和 BeginExecuteQuery 来解决这个问题,但确实如此。

有没有办法以通用的方式做到这一点?

oracle 特定逻辑的简化代码:

0 投票
4 回答
1639 浏览

.net - SQL Server 物理内存在执行命令后增长

我正在使用 SQL Server 2008 在 Windows Server 2008 上运行服务器应用程序,现在我的场景与给定的一样。

  1. 我已经实现了一个自定义的连接池(为什么我这样做是另一个长篇故事)。因此我不会在每个请求上打开或关闭连接。

  2. 服务器应用程序使用池中可用的 10 个连接在一分钟内执行数千个 DBCommand。

  3. 执行命令后,我没有清理连接(因为我不知道要清理什么以及如何在不关闭和重新打开它的情况下清理),而且我也没有处理命令对象本身。

  4. 当服务器应用程序关闭时,它会通过调用它们的 close 方法释放所有连接。

现在我观察到在 sqlserver 的 1 小时或 2 个进程的测试后大约 3Gig 内存,然后我关闭了我的服务器应用程序,即使占用的内存没有释放或减少(根据任务管理器和资源监视器),我重新启动后sqlserver 释放内存。

现在以下是我的问题。

  1. 我是否需要每次都调用 DBCommand 对象的 Dispose,如果是,那么它会对连接对象产生影响。

  2. 上面提到的问题是导致我观察到的还是还有其他原因。

  3. 有什么方法可以在不关闭连接的情况下清理连接,以及每次执行 DbCommand 后需要清理什么样的垃圾。

谢谢穆巴沙尔

0 投票
1 回答
1327 浏览

asp.net - 在 ASP.NET (VB) 中使用参数选择语句 - 错误:输入字符串的格式不正确

所以我在 VB 模块中有一些代码。当我使用在 where 语句中具有硬编码值的 SQL 语句运行它时,它可以工作。我现在正在尝试向模块添加参数,以便表单可以排除来自用户的输入,但我收到消息:输入字符串的格式不正确。

这是代码部分:

就像我说的,如果我将参数替换为固定值,那么一切正常。

0 投票
2 回答
3636 浏览

eclipse - Eclipse 与英特尔 Fortran 调试器

我的问题如下:

我想将 idb intel 调试器与 eclipse 一起使用,以便能够逐步完成我的代码,就像这样idb -gui做一样。我已经尝试实现一个解决方案,我发现我用脚本替换了对 idb -gdb 的直接调用:

这实际上是有效的,因为它启动了我的程序,直到它进入命令提示符。现在我收到以下错误:

那是我浪费了一整天试图解决这个问题并决定发布的时候。任何人都可以通过一些明智的建议进一步帮助我吗?你是如何将 idb 集成到 Eclipse 中的?

干杯,大卫

0 投票
2 回答
2110 浏览

c# - IDbCommand - CommandType.StoredProcedure

我只是好奇IDbCommand.CommandType's 的值是否会在性能方面有所不同?

基本上,我可以将其设置为CommandType.Text并将 SQL 查询“EXEC sp_my_stored_procedure ...”作为命令文本传递。或者,我可以将其设置为CommandType.StoredProcedure并将存储过程名称“my_stored_procedure”作为 CommandText 传递。

我想知道这里是否存在任何性能差异,还是只是传入调用 SP 的查询与传入 SP 名称的问题?


附带说明,我意识到这可能取决于驱动程序,但不确定。所以,如果是这样的话,我也想知道。谢谢!

0 投票
1 回答
217 浏览

sql - SQL:更新不影响任何行

我想更新 DB2/AS400 表中的数据集。

问题是如果参数列表中有字符串参数,则命令找不到要更新的行。

例如:如果我只使用公司编号运行命令,则命令将成功。如果我使用公司编号和设施编号运行命令,则命令失败。

有人有什么主意吗?

编辑

数据库中的数据类型有:

  • 公司:整数
  • 设施:VARCHAR
  • 部门:VARCHAR
  • 生产组:VARCHAR
  • 制造_订单:INTEGER
  • Order_Operation:整数

.NET中的数据类型是:

  • 公司编号:int
  • 设施编号:字符串
  • 部门名称:字符串
  • 生产组:字符串
  • 制造顺序:int
  • 订单操作:int

sql.ToString() 结果:

0 投票
1 回答
10944 浏览

c# - 如何从 IDataReader 获取 DataTable?

我正在尝试从 a 中获取or DataTable,但我失败了。这是代码:DataSetIDataReader

我正在使用IDbConnection并且IDbCommand因为它可以与三个不同的数据库一起使用(该方法CreateConnection(provider, connectionString)根据数据库获取特定类型的连接)。我的查询得到一个 ID(作为 Int64)和一个 DocNumber(作为十进制),但每次我尝试获取十进制值时,它都会抛出OverflowException一条消息:“转换溢出。” 这两个值对我都很重要,但我不知道如何获得这些值。

实际上,我并没有尝试转换为 a 的代码DataTable,我必须毫无例外地获取两者的值。

一些帮助?

0 投票
1 回答
2594 浏览

c# - 如何在 C# 中使用通用数据库连接调用存储过程?

我必须在 C# (.Net 2.0) 中调用存储过程,有时使用 ODBC 连接,有时使用 SQLClient。我未来我们也可能不得不与 Oracle 进行沟通。

我的存储过程具有输入/输出参数和返回值。

我的问题是我找不到一种方法来存储无论客户端如何都可以通用的命令。我正在使用IDbCommand对象。

使用 ODBC 连接,我必须定义:

在 SQLclient 上下文中:

我真的不想解析我的命令,我相信有一个更好的方法来拥有一个通用的!

为了帮助人们重现,您可以在下面找到我是如何建立通用数据库连接的。在我的上下文中,提供者对象是从配置文件中定义的。

谢谢你的时间。

问候,蒂博。

0 投票
1 回答
835 浏览

database - 如何添加参数并执行通用 IDbCommand

这是我的问题的详细信息。我创建了一个数据访问层类,它允许我创建与数据库(Odbc、OleDb 和 SqlClient)通信所需的大部分对象。我还创建了一个业务对象处理层类,它大量使用反射来处理我的业务对象的大量任务。除其他外,该类生成我处理 DAL 所需的每个属性/对象(SQL 流、值列表、属性、设置检索值等)。看看下面的代码以获得进一步的解释:

因此,DAL.SCRFL.GetParamStatement返回格式化INSERT INTO t1 (f1, f2, f3...) values (?, ?, ?...)为插入的字符串和更新、删除、选择语句的适当字符串。一切都是通过反思完成的。这里没有语法错误。我可以通过直接提供程序类型命令手动执行返回值。该DAL.SCRFL.GetProperties方法返回一个哈希表,格式为 key=property (field), value=field value。

现在,我需要为每个属性创建参数并将其添加到我的命令参数中,然后执行它。您将在我的代码中看到这种尝试(我通过循环哈希表为每个属性/值对创建参数)。但是最后我得到了一个例外的Data type mismatch in criteria expression.描述。我尝试将type属性添加到参数对象size等,但均不成功(我评论了它们)。我试图改变param.Value = k.value认为param.Value = If(IsDBNull(k.value), DBNull.Value, k.value)这可能是问题所在,尽管k.value来自我的商务舱并且我故意防止空值。没有任何效果!这是测试;业务类返回值来自DAL.SCRFL.GetParamStatement调用:对 OleDb/Access 数据库进行了测试,如您所见,我将备注字段用单引号括起来。我的反射方法读取类属性的属性(我将其设置为表字段名称)并DAL.SCRFL.GetParamStatement构建基本的 sql 语句以供插入、更新、删除和选择使用。AdapterCommandType是它的内置枚举类型)。

请注意,我有另一种与此类似的方法,它执行一个 sql 语句 (InvokeSql),我在其中彻底检查每个属性的值类型,以在我的 sql 语句中构造 property=value 对。在此方法中使用完全限定的 sql 语句InvokeSql,方法可以在没有单个警告的情况下工作(粗略地说: sql 语句cnn As IDbConnection = CreateConnection(), cmd = CreateCommand(_cmdText, cnn), cmd.ExecuteNonQuery()在哪里_cmdText。没有参数,如您所见!)。我提到这一点是为了指出,每当我将参数与通用 IDbCommands 一起使用时,就会出现问题。即使在我的 DataFactory 中,IDbCommand 设置为提供者特定的命令类型(我DataFactory.CreateCommand(s, cnn)返回通用 IDbCommand)。

在我的 DAL 开发之前,我手动执行上述所有步骤,尽管所有对象(命令、连接等)都被明确声明为提供程序特定类型。从技术上讲,我正在使用与使用通用类型对象(不是特定于提供者)完全相同的场景。但我无法让它工作,在某个地方,可能,我错过了一些东西。