Tag: database

数据库中的一些数据更改。 如何触发一些C#代码在这些更改上做一些工作?

假设我有一个带有数据库的应用程序A. 现在我想添加另一个应用程序B,它应该跟踪应用程序A的数据库更改。应用程序B应该在数据发生变化时进行一些计算。 两个应用程序之间没有直接通信。 两者都只能看到数据库。 基本问题是:数据库中的某些数据发生了变化。 如何触发一些C#代码在这些更改上做一些工作? 为了给出答案的一些刺激,我提到了一些我正在考虑的方法: 使应用程序B轮询感兴趣的表中的更改。 优点:简单的方法。 缺点:流量很大,特别是涉及到许多表时。 引入触发器,触发某些事件。 当他们开火时,他们应该在“事件表”中写入一些条目。 应用程序B只需要轮询该“事件表”。 优势:减少流量。 缺点:逻辑以触发器的forms放入数据库。 (这不是触发器“邪恶”的问题。这是一个设计问题,这使它成为一个劣势。) 摆脱轮询方法并使用SqlDependency类来获取更改通知。 优势:(也许?)流量少于轮询方式。 缺点:不是数据库独立的。 (我知道ODP.NET中的OracleDependency,但其他数据库呢?) 什么方法更有利? 也许我已经错过了上述方法中的一些主要(dis)优势? 也许还有其他一些我没有想到的方法? 编辑1:数据库独立性是…让我们称之为“销售人员”的一个因素。 我可以使用SqlDependency或OracleDependency。 对于DB2或其他数据库,我可以回退到轮询方法。 这只是一个成本和收益的问题,我想至少考虑一下,所以我可以讨论它。

显示每个usercontrol文本框中的每条记录

我创建一个usercontrol(usercontrol2)并在usercontrol(usercontrol2)上添加textBox。 表格代码: using (SqlConnection myDatabaseConnection = new SqlConnection(myConnectionString.ConnectionString)) { myDatabaseConnection.Open(); using (SqlCommand SqlCommand = new SqlCommand(“Select LastName from Employee”, myDatabaseConnection)) using (SqlDataAdapter da = new SqlDataAdapter(SqlCommand)) { SqlDataReader DR1 = SqlCommand.ExecuteReader(); int y = 0; while (DR1.Read()) { y++; for (int i = 0; i < y; i++) { UserControl2 userconrol = new UserControl2(); userconrol.Location […]

动态创建SQL插入语句时出错

我可以知道我的陈述有什么问题吗? 我收到语法错误。 一直试图找出错误的一整天。 🙁 cmd.CommandText = “INSERT INTO LogIn(Username,Password) VALUES(‘” + AddUsernameTextBox.Text + “‘,'” + AddPasswordTextBox.Text + “‘)”;

使用Ado.net阅读Ms Access

我在C#中读取数据库(Ms Access)。 我正在使用Ado.net进行连接。 这个数据库有很多表(大约100个),每个表有大约50列和500行。 每个字段包含不同的数据类型(整数,字符串,布尔)。 我要做的是我必须将选定的表和字段转换为二进制格式。 经过一些文献调查后,我计划使用’DataReader’读取数据,因为我只需要为二进制转换读取变量。 我的问题是 在C#编程方面应该是什么样的数据结构? 说如果我为所有表创建单独的类并定义成员变量和方法,我怎样才能使它更有效? 因为我已经提到有100个表和50个字段,实际上我不需要选择所有字段(我只需要选择所需的字段)。 我不想像它那样硬编码(例如) SELECT BusinessEntityID, LoginID, NationalIDNumber from table1Name 因为我必须遍历选定的表和我的代码中提到的选定字段。 由于我对SQL有点新意,能不能提供一些提示? 换句话说,如果我问如何使用表和字段的变量使选择查询有效(如果这个问题有任何问题,请纠正我) 更新 下面提到的SQL Server SELECT INTO @variable?

选择未锁定的行oracle

我在C#中有一个使用Oracle数据库的应用程序。 我需要一个查询来从oracle数据库中的表中获取未锁定的行。 如何选择所有未锁定的行? 是否有任何“翻译器”可以将此T-SQL(MS SQL Server)查询转换为Oracle方言? SELECT TOP 1 * FROM TableXY WITH(UPDLOCK, READPAST); 我对Oracle缺乏这样的function感到有些失望。 他们想让我使用AQ或者什么?

nHibernate批量大小不起作用

我在nHibernate中遇到了批量大小的问题(C# – VS 2012)。 我在集合和配置中设置了“batch-size”,但它不起作用。 using (var s = OpenSession()) { using (var t = s.BeginTransaction()) { Parent parent = s.CreateCriteria(typeof(Parent)).List().First(); Console.Write(parent.Children[0]); t.Commit(); } } nHibernate profiler显示它一次性占用所有孩子(例如1000个孩子),但它应该只需要5个孩子。 Parent.hbm.xml: Child.hbm.xml: 的hibernate.cfg.xml NHibernate.Driver.SqlClientDriver Server=.;initial catalog=Lista6;Integrated Security=SSPI 5 true NHibernate.Dialect.MsSql2008Dialect 60 true 1, false 0, yes ‘Y’, no ‘N’ true 你有什么想法为什么批量大小不起作用?

将C#对象映射到数据库模式

我正在用C#开发一个客户端 – 服务器桌面应用程序系统 。 客户端只是一个瘦客户端,可以显示服务器告诉它的任何内容。 服务器直接与本地数据库通信,本地数据库用于存储各种系统的元数据。 每个系统都有自己的表,其结构对于该系统是唯一的。 我试图理解如何在没有“硬编码”任何内容的情况下告诉桌面应用程序数据库的结构,如果这是有道理的。 我相信我需要研究对象关系映射,但我不太清楚从哪里开始,因为我以前从未接受过这种复杂性的项目。 我的想法是我的服务器配置以某种方式定义了这个映射,并且它可能是可扩展的,因此我可以在将来为更多系统添加更多映射,或者可能更改映射。 我怎么看这个系统工作是这样的: 客户端上的用户将包含元数据的文件上载到服务器。 服务器将确定此文件所针对的系统类型,然后解析该文件以提取元数据,并将其输入数据库。 我最初设想这种情况的方式是我将有一个通用的抽象类/接口,需要为每个系统类型派生。 然后,派生类将实现特定于该系统类型的解析函数,以便它可以从文件中提取元数据。 但问题是我无法将提取的数据输入数据库,因为服务器不知道派生类的底层结构。 谁能指出我正确的方向? 我发现了NHibernate ,这听起来像我可能需要的,但我不是百分百肯定。 正如我先前所说,问题的一部分是我对其中一些概念没有充分的理解。 任何人都可以推荐一些在线资源,这些资源可以帮助我理解一般的Object Relational Mapper(ORM) ,特别是它与.Net Framework有什么关系?

Fluent nHibernate – 如何在联结表上映射非键列?

以Fluent nHibernate网站上提供的示例为例,我需要稍微扩展一下: alt text http://wiki.fluentnhibernate.org/images/2/24/FirstProjectSchema.png 我需要在StoreProduct表中添加一个’Quantity’列。 我如何使用nHibernate映射这个? 为上面给出的场景提供了一个示例映射,但我不确定如何将Quantity列映射到Product类上的属性: public class StoreMap : ClassMap { public StoreMap() { Id(x => x.Id); Map(x => x.Name); HasMany(x => x.Employee) .Inverse() .Cascade.All(); HasManyToMany(x => x.Products) .Cascade.All() .Table(“StoreProduct”); } }

多个表中具有相同名称的列导致SubSonic Select出现问题

还有其他问题(至少有2个我见过它们)与此类似,但我无法使用它们来解决这个问题。 现在问题是:我有3个表,我只需从中选择4列。 我正在使用InnerJoin并且它工作得很好。 当我添加Where to this Select时,问题就开始了。 我在两个表中有一个名为“Name”的列。 如果我简单地添加 .Where(“Name”).Like(“A%”) 它说“……含糊不清的列名……” 如果我使用完全限定的列名(表格前缀为列名),则必须声明参数@TABLE_NAME SqlQuery sq = new Select(Tables.TableOne + “.” + TableOne.Columns.MemberId + ” AS MemberId”, Tables.TableTwo + “.” + TableTwo.Columns.Name + ” AS MemberName”, Tables.TableOne + “.” + TableOne.Columns.ExpiryOn + ” AS MembershipExpiresOn”, Tables.TableFour + “.” + TableFour.Columns.Name + ” AS Country”) .From(DAL.Tables.TableOne) .InnerJoin(Tables.TableTwo) .InnerJoin(Tables.TableThree) […]

同步框架服务器到服务器同步

我有一种这样的场景: 场景http://sofzh.miximages.com/c%23/bb887608.Figure3(en-us).png 在这里,我需要将本地服务器数据库与主数据库服务器同步(例如:办公室中的计算机连接到办公室服务器,他们像本地服务器一样使用它,因此不需要同步。但是其他办公室的计算机也可以使用本地服务器我们需要通过主数据库服务器在办公室之间进行同步。 我认为我不能在这里使用SQLCompact。 是否有提供商直接从客户端进行服务器到服务器的同步? 如果没有人可以提供如何管理这种情况的解决方案样本?