Tag: ado.net

如何使两个SQL查询真正异步

我的问题是基于一个真正的项目问题,但我从来没有使用过System.Threading.Tasks库或执行任何涉及线程的严肃编程,所以我的问题可能是缺乏关于特定库的知识以及对异步的更普遍的误解真的意味着在编程方面。 所以我的真实情况就是这个 – 我需要获取有关用户的数据。 在我目前的情况下,它是财务数据,所以假设我需要特定用户的所有Accounts ,所有Deposits和所有Consignations 。 在我的情况下,这意味着查询每个属性的数百万条记录,并且每个查询本身相对较慢,但是获取Accounts比获取Deposits慢几倍。 所以我为我要使用的三种银行产品定义了三个类,当我想获取某些用户的所有银行产品的数据时,我做了类似这样的事情: List accounts = GetAccountsForClient(int clientId); List deposits = GetDepositsForClient(int clientId); List consignations = GetConsignationsForClient(int clientId); 所以问题从这里开始我需要同时获取所有这三个列表,因为我要将它们传递给我显示所有用户数据的视图。 但正如现在一样,执行是同步的(如果我在这里正确使用这个术语),那么收集所有三种产品的数据的总时间是: Total_Time = Time_To_Get_Accounts + Time_To_Get_Deposits + Time_To_Get_Consignations 这不好,因为每个查询都比较慢,所以总时间很长,而且, accounts查询比其他两个查询花费的时间要多得多,所以今天进入我脑海的想法是 – “如果我能做什么同时执行此查询“。 也许这是我对这个主题最大的误解,但对我来说,最接近这个想法是让它们异步,所以也许Total_Time不会是最慢查询的时间,但是会比所有三个查询的总和快得多。 由于我的代码很复杂,我创建了一个简单的用例,我认为,反映了我想要做的很好。 我有两种方法: public static async Task GetAccounts() { int total1 = 0; using (SqlConnection connection = new […]

基于.NET3.5的最佳策略,用于创建断开连接的db应用

我的要求是: 相对较小的数据库:25-30个表,每个表4-5k行。 4-5个用户在他们的笔记本电脑上拥有自己的本地数据库副本。 在需要时或在一天结束时同步。 免费解决方案,正在为NFP ogranization进行此设置。 我在过去几天一直在研究各种选择。 最后我考虑缩小到数据集,同时将它们序列化为XML,但似乎这不是一个好主意(我以前的问题的答案强烈建议。) 所以我现在的问题是我应该采用什么方法(数据库和访问技术)? 我想使用c#和一种易于使用的技术来访问我的数据库并在一天结束时同步它。 根据这个链接:http://msdn.microsoft.com/en-us/library/8fxztkff.aspx,MS建议两种不同的方法。 我很惊讶他们在这里没有提到LINQ。 那么小组,你推荐什么样的路径? 非常感谢阅读。

C# – ADO.NET的一些高性能最佳实践/技巧是什么?

我决定不使用orm并将直接使用ADO.NET作为我的项目。 我知道我知道它需要更长的时间来编程,但我只是希望页面即使在高峰时也能以高速加载。

加速LINQ插入

我有一个CSV文件,我必须将其插入SQL Server数据库。 有没有办法加快LINQ插入? 我创建了一个简单的Repository方法来保存记录: public void SaveOffer(Offer offer) { Offer dbOffer = this.db.Offers.SingleOrDefault ( o => o.offer_id == offer.offer_id); // add new offer if (dbOffer == null) { this.db.Offers.InsertOnSubmit(offer); } //update existing offer else { dbOffer = offer; } this.db.SubmitChanges(); } 但是使用这种方法,程序比使用ADO.net SQL插入插入数据慢得多(新的SqlConnection,新的SqlCommand用于选择,如果存在,新的SqlCommand用于更新/插入)。 在100k csv行上,ADO.net方式需要大约一个小时,大约需要1分钟左右。 对于2M csv行,它花了大约20分钟ADO.net。 LINQ在25分钟内增加了大约30k的2M行。 我的数据库有3个表,在dbml中链接,但其他两个表都是空的。 测试是在所有表空的情况下进行的。 PS我曾尝试使用SqlBulkCopy,但我需要在将其插入数据库之前对Offer进行一些转换,我认为这违背了SqlBulkCopy的目的。 更新/编辑:18小时后,LINQ版本增加了大约200K行。 我也使用LINQ插件测试了导入,与ADO.net相比也非常慢。 我没有看到插入/提交更改和选择/更新/插入/提交更改之间的重大区别。 我仍然需要尝试批量提交,手动连接到db和编译的查询。

如何在DataGridView中更新行?

我有一个从DataSet填充的DataGridView 。 如何更改DataGridView任何单元格,并更改DataSet(以及数据库)。 我可以从中学到一个示例程序(在C#中)吗?

通过单击按钮将数据从Access获取到C#中的文本框

我在MS Access中有一个表包含:(FoodID,FoodName,Price)。 在C#中,我有三个文本框(txtId,txtName,txtPrice)和一个按钮(btnSearch)。 我的问题是,在C#中我只需输入(txtId)中的FoodID然后点击按钮搜索它将自动显示txtName和txtPrice中的FoodName和Price(来自表访问)。 我从你那里得到了源代码,但是它的错误(OleDbDataReader dr = cmd.ExecuteReader();)它的消息是“条件表达式中的数据类型不匹配”。 请帮我解决这个问题。 这是我为您提供的完整源代码。 System.Data.OleDb.OleDbConnection conn = new OleDbConnection(); conn.ConnectionString = “your connection string”; OleDbCommand cmd = new OleDbCommand(); cmd.Connection = conn; cmd.CommandText = “select FoodName, Price from tablename where FoodID = ‘” + txtId + “‘ “; conn.Open(); OleDbDataReader dr = cmd.ExecuteReader();//error this line! while(dr.Read()) { txtName.Text = […]

如何在C#中为多个请求保持单个SQL Server连接实例打开?

我有一个Web API,其中包含C#中的数据库插入逻辑(ado.net)。 当多个用户(例如100个用户)调用Web API时,每次打开SQL Server连接并关闭多个请求。 它会降低性能。 如何为多个请求保持单个SQL Server连接? 我必须保持SQL连接只打开一次并在一段时间后关闭,以便在此期间它应该考虑多个请求并在数据库中插入记录。 请建议。

如何在defaultprocedure中将默认值传递给日期参数 – Sqlserver 2008?

这是我的存储过程: ALTER proc [dbo].[allrecp] @peid int=0, @pename varchar(20)=”, @pdes varchar(20)=”, @pdoj date=’1111-1-1′, @sal money=0, @dept int=0, @loc int=0,@i int=0 as begin if(@i=1) begin insert into Employee values(@pename,@pdes,@pdoj,@sal,@dept,@loc) end if(@i=2) begin update Employee set ENAME=@pename,DESEGNATION=@pdes,DOJ=@pdoj,SALARY=@sal,DEPTID=@dept,LOCATIONID=@loc WHERE EMPID=@peid end if(@i=3) delete EMPLOYEE where EMPID=@peid end 我的c#代码是: private void btndelete_Click(object sender, EventArgs e) { parameteres(3); } private void […]

浏览器收集哪些值作为回发数据?

当要将页面发回服务器时,浏览器会收集每个控件的当前值并将其粘贴到一个字符串中。 然后,此回发数据将通过HTTP POST发送回服务器。 Q1 – 除了控件的Text属性和SelectedIndexchanged(因此除了用户输入数据),控件的其他属性/值是否被浏览器保存为回发数据? Q2 – 对于GridView,哪些值是由浏览器在回发中保存的? 只有那些用户选择编辑的行? 字节

如何在我的应用程序中使用SELECT语句,该语句必须返回多个记录以显示某个字段的多个值(m:m关系)

我不知道你是否理解我的意思,但我会尝试用一个例子来解释它。 用户表 UsedId UserName ——– ———- 1 Mike 2 Raul HasPrivileges表 UsedId PrivilegeId ——– ————– 1 1 1 2 1 3 2 2 2 3 特权表 PrivilegeId Privilege ————- ———— 1 Create 2 Edit 3 Delete 现在这是两个表用户和权限,它们之间具有多对多的关系,所以当我选择与他们拥有的权限相关联的所有用户时,我在这个示例中得到3个记录或行中的每个人Mike包含他拥有的特权。 现在我需要在我的应用程序中显示所有具有权限的用户的列表但是我不希望我的用户三次看到用户显示他的所有权限或其他任何其他我希望它显示 User Id : 1 Name : Mike Privileges : Create, Edit, Delete 或者接近这个的东西! 任何想法的人!??