Oracle客户端与基于任务的异步模式(async/await)的比较
我想编写一堆方法,以异步/等待方式查询Oracle数据库.由于ODP.NET似乎不支持等待 *async方法,也不支持begin/entoperationName对,我必须手动实现哪些选项? 到目前为止,我看到的所有I/O密集型异步方法的所有示例仅调用.NET库中的其他异步方法,但是在内部进行上下文切换的方式上没有散开光线.该文档说,在这些情况下,没有使用单独的线程,并且多线程开销显然仅对于CPU密集型操作仅值得.所以我想使用task.run()不是一个选项,还是我错了? 只要我知道Oracle ODP是异步库的同步包装器, 解决方案 .我发现了这篇文章,因为我只是想知道的是:引入Oracle ODP调用的异步模式会提高性能吗? (我在IIS Net TCP上使用WCF). ,但是,据说,只要引入异步模式就完成了一个新任务,并且调用线程已经来自线程池,就无法进行改进,这将只是开销. 其他解决方案 您始终可以使用 task.factory.startnew 与 t
0 2024-04-15
编程技术问答社区
如何从.NET连接到Oracle数据库?
当我打开SQL命令行时,我编写CONNECT username/password@[//]host[:port][/service_name],然后将我连接到数据库.但是,我无法使用连接字符串从.NET项目连接.我尝试了很多事情,例如和,但是到目前为止什么都没有.每当我在以下内容中
0 2024-04-15
编程技术问答社区
在C#中执行一个返回参考游标的oracle函数
我有一个带有In Out参考光标的过程的Oracle软件包.我的理解是,这是非常标准的. 我不喜欢的事实是,我必须编写大量代码才能看到输出. 所以我问了这个问题,事实证明,我可以通过创建包装过程的函数来获得我想要的东西. 更新:看来我不再需要该功能,但是对于那些好奇的人来说,无论如何都可能知道原始的问题和回答更新. 这是功能 FUNCTION GetQuestionsForPrint (user in varchar2) RETURN MYPACKAGE.refcur_question AS OUTPUT MYPACKAGE.refcur_question; BEGIN MYPACKAGE.GETQUESTIONS(p_OUTPUT => OUTPUT, p_USER=> USER ) ; RETURN OUTPUT; END; 这是我在SQL开发人员中执行它的方法 var r refcursor
0 2024-04-15
编程技术问答社区
使用EF6和Oracle.ManagedDataAccess时,表不存在。
我正在使用ef 6.0.0.0和odp.net Oracle.ManagedDataAccess版本4.121.2.0为数据访问创建MVC应用程序. . 在我的Controller中,我有以下代码段: public ActionResult Details(int id) { try { EmployeeContext employeeContext = new EmployeeContext(); Employee employee = employeeContext.Employees.Single(x => x.Id == id); //Here the exception occurs! return View(employee); } catch (Exception e) { return View(e); } } ,当我加载Employee/Details.cshtml
0 2024-04-15
编程技术问答社区
DbCommand和参数化的SQL,ORACLE vs SQL Server
我有一个应用程序,它将将各种数据存储在数据库中. 数据库可能是Oracle或SQL Server. SQL是基于配置和在执行过程中拾取的值动态创建的. 通过使用dbProviderFactory,我的DB方法能够与Oracle或SQL Server一起使用,而无需为任何数据库编写自定义代码,除了一件事.参数/绑定变量.对于Oracle,我需要使用":ParameterName",而对于SQL Server,我需要使用"@ParameterName".有什么方法可以使此通用? 示例代码: public class DbOperations { private DbProviderFactory m_factory; private DbConnection m_CN; ... private void InsertToDb(ValueType[] values, ColumnType[] columns) {
0 2024-04-15
编程技术问答社区
在dotnet mvc应用程序中连接到Oracle数据库
oracle发布了beta版本 dotnet core 2 (最后!).但是我无法使它起作用.有人做了吗?如果是,请给我发送代码或帮助我修复此\ o 有用的:我正在使用视觉代码,项目" dotnet new MVC"(.NET 2),并且我通过Nuget Add添加程序包设备安装了Oracle.ManagedDataAccess.Client(ctrl + p,...) 这里我的代码: public static OracleConnection AbrirSigmaUser(AutenticacaoModel autenticacao) { try { string _connectionString; _connectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(H
0 2024-04-15
编程技术问答社区
在Oracle中使用Dapper
我们将Oracle用作数据库提供商,并研究了替换我们的一些数据访问层(难以维护,难以合并XSD)与底层的Dapper基于Saner存储库的模式.但是,在与Oracle一起使用时,我们已经遇到了许多问题. 命名参数:每当在查询Oracle中使用它们时,这些参数似乎都被忽略了,似乎以任何顺序解释它们. SQLMAPPER返回正确命名的参数,它们只是在Oracle 中没有正确解释 变量的"@"命名约定与oracle命名参数不相容.它希望在任何参数面前看到":" 以前有人遇到过这个问题吗? 解决方案 imo,此处的正确方法是 不是 to(按照接受的答案)使用数据库特定参数前缀(SO @ sql- so @服务器,: for Oracle) - 而不是:完全不使用前缀 .因此,最终是: il.Emit(OpCodes.Ldstr, prop.Name); (etc) 特别是,static属性会很糟糕,因为它将您限制为一个供应商per AppDomain.
0 2024-04-15
编程技术问答社区
C# Oracle存储过程参数顺序
使用此 PROCEDURE "ADD_BOOKMARK_GROUP" ( "NAME" IN VARCHAR2, "BOOKMARK_GROUP_ID" IN NUMBER, "STAFF_ID" IN VARCHAR2, "MAX_NO" IN INT, "NUMFOUND" OUT INT, "NEW_ID" OUT NUMBER) IS BEGIN NEW_ID := -1; SELECT COUNT(*) INTO NUMFOUND FROM BOOKMARK_GROUP_TABLE WHERE STAFF_ID = STAFF_ID; IF NUMFOUND
2 2024-04-14
编程技术问答社区
Oracle 序列 nextval 是来回跳动的数字
我创建了一个新表格和一个新序列,我有两个C#Web服务,试图使用mySequence.nextval的相同查询将记录插入该表(是的,我多次检查了它,它们都使用mySequence.nextval). 这两个Web服务将行插入表,但是mySequence.nextval是从序列返回数字 这是创建记录的方式,显示PrimaryKey从mySequence.nextval 获得其值 1 21 22 23 2 3 24 25 4 27 28 5 到目前为止没有重复的内容,但是mySequence.nextval为什么来回跳动?我应该担心 更新: 序列是用cache_size = 20 创建的 解决方案 我会敢打赌您的数据库正在运行RAC(实际应用程序群集).假设就是这种情况,并且您使用所有默认设置创建序列,那就是预期的行为. 默认设置是缓存20个值.默认情况下,RAC群集中的每个节点将具有单独的缓存.假设您有一个带有两个节点A和B的群集,则首次在A上请
0 2024-04-14
编程技术问答社区
在c#中执行参数化查询时出现ORA-01745错误
我正在做 之类的事情 ... OracleCommand oCommand = new OracleCommand(); oConnection.Open(); oCommand.Connection = oConnection; oCommand.CommandText = "SELECT * FROM employees WHERE user = :User"; oCommand.Parameters.AddWithValue(":Name", "Employee1"); DbDataReader dbRdr = oCommand.ExecuteReader(); 然后,这引发了例外: ORA-01745:无效的主机/绑定变量名称 编辑:连接字符串看起来像这样: "Data Source=orcl;Persist Security Info=True;User ID=user_id;Password=pwd;Unicode=True" oConnect
0 2024-04-14
编程技术问答社区
如何从.Net核心连接到Oracle数据库连接
在.NETCORE库中,我想连接到Oracle数据库.我有什么办法可以做到吗? 我在又是SO POST ,但是它不起作用,也许自从删除了吗?正如您在我的项目中看到的那样,我正在尝试使用" net461". 我目前正在尝试通过老式的ado.net使用oracle.manageddataaccess.client.我也知道Oracle还没有买断.NETCORE连接器.但是即使在那里我也无法正常工作,它也很难获得 system.data 包括,每当我尝试添加它时,它都会出错. 我的project.json看起来像这样: { "version": "1.0.0-*", "dependencies": { "NETStandard.Library": "1.6.0", "Oracle.ManagedDataAccess": "12.1.24160719", }, "frameworks": { "netstandard1.6":
0 2024-04-14
编程技术问答社区
C#: 对象不能从DbNull投向其他类型
我已经阅读了有关此网上的几篇文章,但是它们都没有解决我的问题. 在线发布的大多数问题都指向我检查数据库中的dbnull值,而我正在代码中进行此操作. 这是抛出异常的代码: int rowNum = Convert.ToInt32(dataTable.Rows[r][dataTable.Columns.Count - 2]); 这是我要检查dbnull值的代码: for (int r = 0; r
0 2024-04-14
编程技术问答社区
涉及多个表的多个交易的无间隙序列
我对不同表上的无差距数字有要求(法律). ID可以在其中有孔,而不是序列. 这是我必须在C#代码或数据库中解决的问题(Postgres,MS SQL和Oracle). 这是我的问题: Start transaction 1 Start transaction 2 Insert row on table "Portfolio" in transaction 1 Get next number in sequence for column Portfolio_Sequence (1) Insert row on table "Document" in transaction 1 Get next number in sequence for column Document_Sequence (1) Insert row on table "Portfolio" in transaction 2 Get next number in sequence for c
0 2024-04-14
编程技术问答社区
Oracle ODP.Net和EF CodeFirst-SaveChanges错误
有人可以帮助我: 代码: Role r = new Role { ID = 1, Name = "Members" }; ctx.Roles.Attach(r); //Saving User User u = new User { Login = login, Password = password, Status = 1 }; u.Roles.Add(r); ctx.Users.Add(u); ctx.SaveChanges(); 我要做的是保存具有现有角色的新用户.用户和角色类具有Fluent-api映射的多对多关系,如下所示: modelBuilder.Entity() .HasMany(u => u.Roles) .WithMany(r => r.Users) .Map(x => { x.ToTable("USER_ROLE_XREF", dbsch); x.MapLeftKey("ID_USER");
0 2024-04-14
编程技术问答社区
通过c#将整数阵列传递给oracle过程
我想通过C#将整数数组传递到存储过程.该过程通过SQL开发人员起作用,但在C#中不起作用.这是我的代码,但我被 wrong number or types of arguments in call to 'V1'错误.请帮我 C#代码: DBEngine oracleEngine = new OracleEngine(connectionString); DbCommand cmd = oracleEngine.MakeTextCmd("v1"); cmd.CommandType = CommandType.StoredProcedure; OracleParameter param1 = new OracleParameter(); List values = new List() { 1, 2, 3, 4, 5 }; OracleParameter p_strings = new OracleParameter(); p_strings.Parame
0 2024-04-14
编程技术问答社区
将一个整数列表从C#传入Oracle存储过程中
我有一个Oracle存储的过程,该过程更新了具有以下语句的表. update boxes set location = 'some value' where boxid = passed value 我有一个页面,用户选择100多个框并使用新的位置值对其进行更新.目前,我必须调用100次以上存储的过程以更新每个框(每次通过一个盒装). 我想知道如何将BoxID列表从C#传递到存储过程中,这样我就必须一次调用存储过程. 我希望在(boxids)中使用 在update语句中的子句. 请告诉我该如何实现.预先感谢! 解决方案 Oracle允许您将值的数组作为参数传递.从这个问题和这个您可以定义这样的类型: create or replace type CHAR_ARRAY as table of INTEGER; 然后将存储过程定义为: CREATE OR REPLACE PROCEDURE product_search(
0 2024-04-14
编程技术问答社区
为什么我在这个CLOB字段的GetOrdinal函数中得到OutOfRange异常?
这是我的代码的示例. field function_script是我的表IS_FUNCTION中的clob字段(唯一的clob字段) public void ReadFunction(string FName, out string fContent) { OracleCommand command = _connection.CreateCommand(); OracleTransaction transaction = _connection.BeginTransaction(); command.Transaction = transaction; command.CommandText = "SELECT TO_CLOB(TO_NCLOB(FUNCTION_SCRIPT)) FROM IS_FUNCTION where FNAME=:fName "; command.Parameters.Add("FName", OracleType
0 2024-04-14
编程技术问答社区
C#等同于java的准备语句
我正在尝试在C#中创建准备好的语句. 由于某种原因,我尝试的一切都以充满活力而结束. 这是我现在的代码: using (OracleCommand cmd = new OracleCommand()) { cmd.Connection = conn; cmd.CommandType = CommandType.Text; cmd.CommandText = "insert into daily_cdr_logs " + "(message) " + "values " + "(:message)"; cmd.Parameters.Add(:message, msg); //OracleDbType.Int32, postpaid_duration, ParameterDirection.Input); cmd.Prepare(); cmd.
0 2024-04-14
编程技术问答社区
RDLC本地报告导出到Excel真的很慢
我们有一个针对后端中的Oracle数据库运行RDLC本地报告的ASP.NET页面,在导出到Excel电子表格时,该报告非常慢.我已经进行了一些调查,并确定查询本身不应该怪罪 - 我可以使用SQL开发人员直接对Oracle进行查询,并在5秒钟内将结果导出到Excel,但是当我通过ASP运行时. NET页面和ReportViewer控件大约需要3分钟才能返回. 有人对为什么这么慢有任何建议吗?查询返回约8000行,每条约30列,因此这不是一个很小的结果集,但也不是巨大的.对我们如何优化报告的任何建议将不胜感激. 我正在使用Microsoft.reportviewer.webforms版本10.0.0.0,有人知道V11是否具有性能改进? 编辑:尝试了ReportViewer V11,速度没有改善. 解决方案 如果您的报告中有分组.从.NET 4开始,当删除了遗产CA时,RDLC报告在当地处理的RDLC报告需要大量时间来执行动态分组或动态过滤器.现有讨论与此 http
0 2024-04-14
编程技术问答社区
使用regex解析tnsnames.ora
我试图使用Regex从TNSNAMES文件中获取一些信息.我从以下模式开始: MYSCHEMA *? = *?[\W\w\S\s]*\(HOST *?= *?(?\w+\s?)\)\s?\(PORT *?= *?(?\d+)\s?\)[\W\w\S\s]*\(SERVICE_NAME *?= *?(?\w+)\s?\) 当myschema是文件中唯一的模式时, 效果很好,但是当Myschema之后列出其他模式时,它一直匹配到最后一个模式. 我创建了一个新模式: MYSCHEMA *=\s*\(DESCRIPTION =\s*\(ADDRESS *= *\(PROTOCOL *= *TCP\)\(HOST *= *(?\w+)\)\(PORT *= *(?\d+)\)\)\s*\(CONNECT_DATA *=\s*(?\(SERVER *= *DEDICA
0 2024-04-14
编程技术问答社区