Tag: sql

为什么“linq to sql”查询以与常规SQL查询不同的FROM关键字开头?

为什么linq to sql查询以FROM关键字开头,而不像常规SQL查询?

在sql中查询数据字典的最佳方法

对于我正在设置的项目,我需要一个非常动态的数据结构。 我打算存储我没有定义的记录。 一条记录可能包含5列,另一条记录可能包含10列。 为了支持这一点,我想使用包含以下列的表: ResultId RecordId RecordTypeId键值 这支持所有可能的方案,但我做了几个问题。 这是最好的方法还是我错过了更好的选择? 什么是查询这个并以我们的方式获取我的记录的好方法? 我有定义存储在一个不同的表中,告诉我每个记录类型存储哪些列。 我已经看到了需要动态构建的PIVOT语句,因为你需要以数组样式提供字段(尽管我可以通过存储过程提供) 如何保持大量记录的表现? 使用像EF / Linq这样的东西是否方便? 这将使用SQL2008R2 Express后端在.NET 4,C#中编​​码。 我正在寻找一些最佳实践。 更新! 为了澄清一点:我需要存储来自不同的,未知的查询的数据的结果集。 我不知道将会有多少查询定义或它们的外观。 此数据库中的数据仅用于处理。 用户甚至不知道这些表存在,没有输入,也不会有任何报告或任何数据以任何方式击中屏幕。 结果集用于通过代码与其他结果集进行比较。 我需要的是一种高度动态的方式来存储这些记录,这些记录在涉及大量记录时仍然可以执行。 我想到的另一个选择是: ResultId RecordId field1(sql_variant)field2(sql_variant)field3(sql_variant)field4(sql_variant)… 这是一个更好的主意吗?

ODBC参数占位符可以命名吗?

我做了一些搜索,但没有找到我的问题的确切答案。 有没有办法定义哪个? 在SQL查询中属于哪个参数? 例如,我需要执行以下操作: SELECT * FROM myTable WHERE myField = @Param1 OR myField2 = @Param1 OR myField1 = @Param2 OR myField2 = @Param2 ODBC的相同查询是: SELECT * FROM myTable WHERE myField = ? or myField2 = ? or myField1 = ? or myField2 = ? 有没有办法告诉ODBC命令哪个参数除了为每个值加载参数两次外? 我怀疑没有,但可以使用更有经验的ODBC程序员的观点。 编辑 :我正在使用的ODBC驱动程序是BBj ODBC驱动程序。

与entity framework相同的“CASE WHEN THEN”(T-SQL)是什么?

我有一个Transact-SQl请求,我使用了很多,我希望得到entity framework的等价物。 但我不知道如何用EF制作“CASE WHEN”声明。 这是我的请求的简化代码: SELECT Code, SUM(CASE WHEN Month=1 THEN Days Else 0 END) AS Jan, FROM MyTable GROUP BY Code 你能告诉我它是否可能以及如何用EF做到这一点?

带参数的C#存储过程

我在我的应用程序中收到错误,我无法弄清楚如何解决它。 这是代码: SqlConnection myConnection = new SqlConnection(ConfigurationManager.ConnectionStrings[“DBConnection”].ConnectionString); myConnection.Open(); SqlCommand cmd = new SqlCommand(“SELECT ServerIP FROM Servers”, myConnection); SqlDataReader rdr = cmd.ExecuteReader(); if (rdr.HasRows) { while (rdr.Read()) { string serverIP = rdr[“ServerIP”].ToString(); ScheduledTasks st = new ScheduledTasks(@”\\” + serverIP); string[] taskNames = st.GetTaskNames(); foreach (string name in taskNames) { Task t = st.OpenTask(name); var status = […]

如何处理entity framework中的主键5代码优先

在我的EF5代码优先模型中,如果数据库设置主键,则创建新记录会更好。 我使用Guid作为主键,如果设置了DatabaseGeneratedOption.Identity ,SQL Server将始终创建uniqueidentifier 。 但是,当我尝试初始化数据库时,这会导致问题。 如果我在种子方法中设置Guid,SQL Server会覆盖它。 如果我没有设置Guid,我每次都会得到一条新记录。 使用预先设置的Guids为数据库设定种子并为我的正常操作设置DatabaseGeneratedOption.Identity的建议解决方案是什么? 示例类模型: [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public Guid Id { get; set; } public RecordName { get; set; } public DateTime? Created { get; set; } public DateTime? Updated { get; set; } 示例种子方法: var record = new Record() { Id = new Guid(“3B80725E-9550-4933-807F-C2FAA0942225”), RecordName = “New Record”, […]

使用C#将XML导入SQL

我知道这不是运动要求这种帮助,但我已经坚持了一段时间 – 现在我正在阅读两本C#书籍并且每天工作超过9小时。 好的,这是我的问题:我有一个几乎完成的WinForms C#应用程序。 在SQL中我有三个表如下所示: CREATE TABLE [dbo].[Racuni]( [BROJ] [varchar](12) NULL, [DATUM] [datetime] NULL, [TS] [datetime] NULL, [USER_ID] [int] NULL, [KASA_ID] [varchar](3) NULL, [TOTAL] [float] NULL, [STATUS] [varchar](1) NULL, [ARH] [varchar](max) NULL ) ON [PRIMARY] Create Table “Rac_Npl” ( br_rac Char( 12 ) , kasa_id Char( 3 ) , npl_id Integer , iznos Money); […]

检索scope_identity时,特定强制转换无效

我得到例外:“具体演员无效”,这里是代码 con.Open(); string insertQuery = @”Insert into Tender (Name, Name1, Name2) values (‘Val1′,’Val2′,’Val3’);Select Scope_Identity();”; SqlCommand cmd = new SqlCommand(insertQuery, con); cmd.ExecuteNonQuery(); tenderId = (int)cmd.ExecuteScalar();

LINQ和SQL中看似等效的查询返回不同的结果

不知道为什么它被作为一个骗局联系起来。 问题是不同的。 答案是不同的。 不知道该改变什么。 如果有人看到我遗失的内容,请告诉我…… 我使用这两个查询获得了不同数量的结果。 在分析了几个小时之后,我需要放弃,承认我无法发现重要性的差异。 由于我的方法库被清空,我正在寻求帮助。 LINQ List result = context.Unos .Join(context.Duos, uno => uno.CommonId, duo => duo.CommonId, (uno, duo) => new { Uno = uno, Duo = duo }) .Where(item => item.Uno.Amount > 0 && item.Duo.Type == 2) .Select(item => item.Uno) .ToList(); SQL select * from Uno as u join Duo as […]

在SQL Server Management Studio中快速从C#运行时,SQL查询超时

我有一个C#程序,使用下面列出的代码执行SQL查询。 我已经使用这段代码一段时间没有问题,直到前几天。 我将查询字符串传递给SQL,其中包含一个字符串列表,这些字符串是库存标识符。 几天前我运行它,查询超时,如果我让它运行一个多小时。 我花了这么多天试图调试这个。 在我的原始查询中,大约有900个标识符。 我已经尝试过改变我能想到的一切,但我得到了无法解释的结果。 例如: 查询使用一个股票列表,但不能使用另一个字符串和总长度相同的长度列表 它适用于一个列表,但不能以相反的顺序使用相同的列表 有一个列表,如果有正好900个标识符,它可以工作,但如果有899或901则不行,我可以包含或排除不同的标识符并获得相同的结果,因此它不是一个标识符之一的时髦。 在每种情况下,我都捕获了我的程序传递的查询字符串并将其复制到SQL Server Management Studio中,并且在每种情况下,查询都会在1秒内运行。 我已经在这个和其他论坛上阅读了关于在SQL Server Management Studio中工作但在从程序运行时超时的所有内容,但这似乎有所不同,因为我可以找到失败的情况和类似的情况工作。 我希望看到我可能会看到可能发生的事情的建议。 using (SqlConnection conn = new SqlConnection(_connectString)) { conn.Open(); using (SqlCommand cmd = new SqlCommand(queryString, conn)) { cmd.Parameters.Clear(); cmd.CommandTimeout = _timeout; SqlParameter param; if (parms != null) { foreach (string parm in parms.Keys) { param = […]