Tag: oracle10g

来自Machine.Config的maxTimeout值未被C#winform应用程序获取

我一直在使用Oracle 10g数据库的winform应用程序,它正在使用TransactionScope并想修改machine.config文件中指定的maxTimeOut值,我的machine.config文件位于以下位置(我正在使用.net 4这个应用程序) C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config 最初没有为maxTimeOut指定任何内容,因此它默认为10分钟。 为了更改它,我添加了maxTimeout=”00:00:10″值,如下所示: 我重新启动了PC并运行了一个持续时间超过此时间的测试 – 但是事务在10秒后似乎没有中止,而是使用了TransactionScopeOption参数中指定的scopeOption.TimeOut值(5分钟)并且事务超时5分钟后。 我是否已将maxTimeout值包含在上方的正确位置? 文件中是否有任何需要更改的内容? 为什么没有使用machine.config中maxTimeout的值? 谢谢

将C#app与Oracle 10g连接:ORA-12154:TNS:无法解析指定的连接标识符

我是数据库工作的初学者。 我试图从ac#应用程序访问Oracle10g数据库。 但是,当我这样做时,我得到这个错误: ORA-12154:TNS:无法解析指定的连接标识符“ 我正在使用以下代码: string oradb = “Data Source=ORCL;User Id=system;Password=goodbye;”; OracleConnection conn = new OracleConnection(oradb); // C# conn.Open(); 连接字符串oradb是否有错误?

如何在Oracle中存储一个字节数组?

我想在Oracle数据库中存储一个64字节的短数组(密码哈希)。 我认为char(64 byte)是我需要的,但似乎它不起作用。 在Microsoft SQL中,我使用binary和varbinary类型。 我需要在Oracle中使用哪种类型? 我发现的每个例子都使用blob来存储二进制数据,但我认为blob仅适用于大型对象,而不适用于固定大小的短数组。 更新数据时,这样的代码是否合适: byte[] passwordHash = GenerateHash(); using (OracleCommand updateHash = new OracleCommand(“update A set passwordHash = :hash where EntryId = :id”, oracleConnection)) { updateHash.Parameters.Add(“:hash”, passwordHash); updateHash.Parameters.Add(“:id”, entryId); if (updateHash.ExecuteNonQuery() != 1) { // … } } 或者我错过了什么,字节数组参数不能像这样添加?

TransactionScope – 基础提供程序在EnlistTransaction上失败。 MSDTC被中止

我们的团队遇到的问题表现为: 基础提供程序在EnlistTransaction上失败; 无法访问已处置的对象。对象名称:’Transaction’。 一旦我们开始使用TransactionScope来处理我们的应用程序的事务,它似乎就出现了。 堆栈跟踪的顶部部分被捕获为: 在System.Data.EntityClient.EntityConnection.EnlistTransaction(事务事务)处的System.Data.Objects.ObjectContext.EnsureConnection()处于System.Data.Objects.ObjectContext.ExecuteStoreCommand(String commandText,Object [] parameters)处于Reconciliation.Models。在EntityDbEnvironment.cs中的Reconciliation.Models.Legacy.EntityDbEnvironment.ExecuteOracleSql(String sql)中的BillLines.BillLines.Reconciliation.Interfaces.IBillLineEntities.ExecuteStoreCommand(String,Object []):第41行 同时更新MSDTC日志,我使用此处的说明提取了该日志: pid=7060 ;tid=7908 ;time=04/29/2013-16:38:30.269 ;seq=136 ;eventid=TRANSACTION_BEGUN ;tx_guid=60f6390c-7570-488a-97a9-2c3912c4ca3e ;”TM Identifier='(null) ‘” ;”transaction has begun, description :”” pid=7060 ;tid=7908 ;time=04/29/2013-16:38:30.269 ;seq=137 ;eventid=RM_ENLISTED_IN_TRANSACTION ;tx_guid=60f6390c-7570-488a-97a9-2c3912c4ca3e ;”TM Identifier='(null) ‘” ;”resource manager #1002 enlisted as transaction enlistment #1. RM guid = ‘defc4277-47a6-4cd9-b092-93a668e2097b'” pid=7060 ;tid=7908 ;time=04/29/2013-16:38:31.658 ;seq=138 ;eventid=RECEIVED_ABORT_REQUEST_FROM_BEGINNER ;tx_guid=60f6390c-7570-488a-97a9-2c3912c4ca3e ;”TM Identifier='(null) […]

C#/ Oracle:指定查询的编码/字符集?

我正在尝试获取Oracle 10数据库的一些数据。 有些细胞含有德国变形金刚(äöü)。 在我的管理工具( TOAD )中,我可以很好地看到它们:“MantelfürDamen”(女士夹克) 这是我的C#代码(简化): var oracleCommand = new OracleCommand(sqlGetArticles, databaseConnection); var articleResult = oracleCommand.ExecuteReader(); string temp = articleResult.Read()[“SomeField”].ToString(); Console.WriteLine(temp); 输出是:“Mantel f ? r Damen” 尝试调试(将鼠标移到变量上),Debug-Window,Console-Window,File。 我想我必须在其中指定编码/字符集。 但是哪里?

C#获取从SQL查询返回的数据的大小

如何在执行查询时获取从数据库返回的数据的大小(以字节为单位)? 这样做的原因是使用两种不同的技术比较数据库服务器上的负载。 我们运行的报表是根据相同的数据集构建的,这些报表会为每个报表加载整个数据集。 现在我们正在缓存数据集并从缓存中运行报告。 我们按客户端运行报告,一些数据集明显大于其他数据集,我需要一些方法来为数据库服务器负载减少提供可衡量的指标。 我已经尝试通过DbConnection,DbDataReader和DbCommand查找任何现有function,但无法找到它。 如果可能的话,测量给定连接或读取器的数据吞吐量会很棒,但任何解决方案都是可以接受的。 是否可以使用数据库服务器代理来测量它? 该数据库是Oracle 10g。

OracleCommand命令,ExecuteNonQuery问题

我必须清除oracle数据库中的某些表,但是当我遇到运行以下代码的问题时 public static void ClearDataTables(IList tableNames) { string connectionString = “CONNECTIONSTRING”; using (OracleConnection connection = new OracleConnection()) { connection.ConnectionString = connectionString; connection.Open(); foreach (string table in tableNames) { OracleCommand command = connection.CreateCommand(); string sql = String.Format(“DELETE FROM TOA_REPORTING.{0}”, table); command.CommandText = sql; command.ExecuteNonQuery(); } connection.Close(); } } 我用这个列表调用这个方法 ClearDataTables(new List { “GROUP_DEFINITION”, “GROUP_REPORT_EMAIL_LIST”, “GROUP_EQUIPMENT_GROUP_STN_XREF”}); 它可以很好地运行前两个表,但是在第三个表上,它会卡住,应用程序会永远运行… […]

如何将unicode数据保存到oracle?

我试图在oracle数据库(10 g)中保存unicode数据(希腊语)。 我创建了一个简单的表: 替代文字http://sofzh.miximages.com/c%23/dvpqnk.png 我知道NVARCHAR2总是使用UTF-16编码,所以它必须适用于所有(人类)语言。 然后我试图在数据库中插入一个字符串。 我在代码中硬编码了字符串(“你好吗?”)。 然后我尝试从数据库中恢复并显示它。 class Program { static string connectionString = “”; static void Main (string[] args) { string textBefore = “Τι κάνεις;”; DeleteAll (); SaveToDatabase (textBefore); string textAfter = GetFromDatabase (); string beforeData = String.Format (“Before: {0}, ({1})”, textBefore, ToHex (textBefore)); string afterData = String.Format (“After: {0}, ({1})”, textAfter, ToHex […]

如何通过ADO.NET/C#使用Array / Table参数到Oracle(ODP.NET 10g)?

这个问题的答案很好,但我正在寻找能够将数组或表发送到Oracle过程的ADO.NET代码,然后在过程中使用该表。 在SQL Server表值参数中,它非常简单: CREATE TYPE [dbo].[IntTable] AS TABLE( [intvalue] [int] NOT NULL, PRIMARY KEY CLUSTERED ( [intvalue] ASC )WITH (IGNORE_DUP_KEY = OFF) ) GO CREATE PROCEDURE dbo.UseTable @SomeInt INT ,@IntTable dbo.IntTable READONLY AS BEGIN — Do whatever using @SomeInt and @IntTable like: INSERT INTO Assignments (masterid, childid) SELECT @SomeInt, intvalue FROM @IntTable END GO 然后在客户端: […]

带有IN语句的Oracle参数?

得到了我需要修改的#.net应用程序。 此刻的查询有效地做到了这一点: select * from contract where contractnum = :ContractNum (非常简化,只是为了表明我们使用的是=和一个参数) 该参数是从C#app上的Settings.Settings文件中读取的,并且其中包含一个字符串。 我需要修改它以包含多个合同,所以我想我可以将SQL更改为: select * from contract where contractnum in (:ContractNum) 但无论我如何格式化参数中的字符串,都不会返回任何结果。 有没有办法让oracle用参数做一个IN? 任何帮助表示感谢,谢谢大家。