Tag: database

LinqToSql。 更新行时出现死锁。 的Parallel.For

我有个问题。 我正在尝试使用parallel更新数据库库。 这是代码: Parallel.For(rCnt, range.Rows.Count + 1, (jrCnt, loopState) => { var prcI = new Price(); // new /*bla bla bla bla – bla bla – bla bla – bla */ if ((!string.IsNullOrEmpty(prcI.name)) && (prcI.prc != 0)) // process add or update { prcI.company = nameprice; prcI.date = datatimeselect.Text; Accessor.AddProductUpdateProduct(prcI); // main func /*bla bla […]

使用事务范围和查询

我正在使用oracle DB的entity framework。 我试图使用事务范围(因为我想要回滚的选项): using (TransactionScope ts = new TransactionScope()) { ….. } 问题是,当我尝试在using语句中查询时,会抛出exception: Unable to load DLL ‘oramts.dll’: The specified module could not be found. (Exception from HRESULT: 0x8007007E) 我怎么解决这个问题?

最快将csv导入数据库表

我已经实现了一个导入function,它从Asp.Net应用程序中的csv文件中获取数据。 大小的文件可以从几kb到最大10 MB不等。 但是,当导入发生时,如果文件大小> 50000,则大约需要20分钟。 这太过分了。 我需要在2-3分钟的时间内执行大约300000条记录的导入。 我知道导入到数据库还取决于数据库服务器的物理内存。我将批量创建插入脚本并执行。 我也知道使用SqlBulkCopy也是另一种选择,但在我的情况下,它不是插入产品的发生,而是更新和删除这是一个名为“FUNCTION CODE”的字段,决定是否插入,更新或删除。 关于如何解决这个问题的任何建议将不胜感激。 实现这一目标的一种方法是实现同时执行进程的多个线程,但我从未实现过直到日期的线程,因此我不知道通过实现相同的复杂性。 感谢和问候,弗朗西斯P.

应用程序中随处可访问数据库

如果我想在Delphi中访问数据库,我可以将一个数据模块添加到项目中,从我的mainform配置它,然后在应用程序的任何地方访问它; 引用将存储在全局变量中。 我知道在C#和其他更现代的OO语言中,全局变量都是不受欢迎的。 那么如何从我需要的地方访问我的数据库呢? 我遇到的最大问题是配置:位置,用户,密码等在设计时是未知的。 我现在有一个db-class并在需要时创建一个新实例,但是我必须将这些设置存储在一些全局可访问的东西中,我只是简单地解决了问题。 什么是标准解决方案? 谢谢,问候,Miel。

Windows服务+ Windows窗体应用程序。 一个数据库。 关于并发的建议

我有SQL Server数据库与文件的信息 – 我在谈论自定义属性。 这些是每个文件的类别和描述。 Windows窗体应用程序适用于用户。 但我还将创建一个Windows服务来跟踪文件的任何变化。 如果发生更改(重命名,移动,删除),则服务必须相应地更新同一数据库。 而且我认为它应该马上做,不要拖延。 现在这将是我第一次制作WS plus,这是我第一次处理并发(理论上我知道线程等等)。 所以: 首先,如果一个进程正在更新另一个进程可能同时使用的数据库,那么可以吗? 你需要首先处理这种情况吗? (可能是我们日常“用户生活”中的fx,我们无法在另一个进程使用时修改文件) 这两个想法共享一个数据源好吗? 如果是,那么如何处理并发? 我可以使用WCF来处理两者之间的消息,但是解决方案是否与WCF有关? 因为我也是第一次使用它:D。 任何帮助表示赞赏。 提前谢谢!

使用数据库作为存储介质在.NET中实现日志记录库

我刚刚开始研究一个日志库,每个人都可以使用它来跟踪用户运行我们的应用程序时的任何类型的系统信息。 到目前为止,最简单的示例是跟踪信息,警告和错误。 我希望所有插件都能够使用此function,但由于每个开发人员可能对报告的重要性有不同的想法,因此我希望尽可能保持通用。 在C ++世界中,我通常会使用像stl::pair这样的东西作为键值对结构,并且在这些日志中有一个stl::list作为“行”。 然后,日志缓存将是一个list<list<pair>> (唉!)。 这样,开发人员可以使用像INFO,WARNING,ERROR这样的const字符串键来为数据库中的列提供一致的命名(用于选择特定类型的信息)。 我希望数据库能够处理任意数量的不同列名。 例如,John可能有一个INFO行,其中一列名为USER,而Bill可能有一个INFO行,其中一列名为FILENAME。 我希望日志查看器能够显示所有信息,如果一个报告没有INFO / FILENAME的值,那些字段应该只显示为空白。 因此,一种选择是使用List<List<KeyValuePair> ,另一种选择是让日志库使用者以某种方式“注册”其模式,然后让数据库执行ALTER TABLE来处理这种情况。 另一个想法是拥有一个仅用于键值对的表,其中一个外键将键值对映射回原始日志条目。 我显然不希望日志记录陷入困境,因此我只锁定日志缓存以复制数据(并删除已经复制的数据),然后后台线程将信息转储到数据库。 我对此的具体问题是: 你看到任何性能问题吗? 换句话说,你有没有试过这样的事情,发现某些事情在实践中效果不好? 除了List<List<KeyValuePair>>之外,还有更多的.NETish方法来实现键值对吗? 即使有办法更好地做#2,我上面提出的ALTER TABLE的想法是不是很糟糕? 你会推荐一个多个数据库吗? 我还不知道日志写入的频率,但理想情况下我们希望有大量的低级信息。 也许应该有一个只有低级别东西的固定模式的数据库,然后是另一个更灵活的数据库,用于向用户报告信息。

System.IndexOutOfRangeException:索引超出了数组的范围

我正在开发一个ATM软件作为家庭作业,我想知道今天处理的交易总量,为此我正在编写以下代码 public decimal getDayTransaction(int accountid, string date, string transactiontype) { decimal totalamount = 0; int i = 0; string connectionString = “Persist Security Info=False;User ID=sa; Password=123;Initial Catalog=ATMSoftware;Server=Bilal-PC”; try { using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand( “Select Amount From [Transaction] where AccountID = ” + accountid + ” AND CurrDate […]

数据类型text和varchar在等于运算符中不兼容

我试图在数据网格视图上访问数据库中的所有记录,具体取决于通过具有2个用于user_name和密码的文本框的表单登录的用户类型,并显示提交按钮记录。 但是我编写的代码给出了以下错误:数据类型text和varchar在等于运算符中是不兼容的。 请建议更改。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Configuration; using System.Data.SqlClient; namespace Login_form { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { string str […]

在Windows Phone 8.1类库中创建SQLite数据库

我有一个Windows Phone 8.1类库,我想稍后添加它作为Windows Phone 8.1 App项目的参考。 该ClassLibrary应负责创建和管理自己的数据库。 我尝试在我的ClassLibrary中创建一个新的SQLiteConnection ,但它抛出以下错误: A first chance exception of type ‘System.InvalidOperationException’ occurred in SQLitePCL.DLL中A first chance exception of type ‘System.InvalidOperationException’ occurred in SQLitePCL.DLL但是,如果我在我的MainApp中执行相同的操作,一切正常。 那么,是否可以在ClassLibrary中创建一个SQLite数据库,该类库负责在没有MainApp支持的情况下创建和管理它。

如何回滚与LINQ to SQL相关的事务?

问题只是回滚变化,而不是提交。 假设我获取了一些数据,我更改了它们,我提交了更改(可选步骤)并且我回滚了事务。 无论你在哪里看每个作者写,这都会取消更改。 但我发现这是半真的 – LINQ DataContext将保留更改的数据! 我使用TransactionScope和DataContext.Transaction测试了这个。 在这两种情况下,我都有相同的行为。 解决方法是在回滚后重新创建DataContext(但这会导致其他问题,如缓存数据和处理嵌套事务)或手动丢弃DataContext中的更改。 然而,这些只是解决方法。 问题 那么我错过了什么? LINQ to SQL不适合交易吗? 如何使用交易,以便他们真的回滚变化? 例 MyTable record = null; db.Connection.Open(); using (db.Transaction = db.Connection.BeginTransaction()) { record = db.MyTable.First(); record.BoolField = !record.BoolField; // changed db.SubmitChanges(); db.Transaction.Rollback(); }