Tag: sql

C#中长时间运行任务的进度条

我的应用程序运行一些可能需要很长时间的数据库查询。 在执行这些查询时,我的应用程序似乎冻结,看起来应用程序已停止工作。 我需要使用进度条来避免这个问题,但我不确定如何预测查询执行所需的时间。 运行查询的代码如下 private void CheckSsMissingDate() { while (DateTime.Parse(time) ='” + tempTime + “‘”,ssCon); var dr = cmd.ExecuteReader(); var count = 0; while (dr.Read()) { ssChkDate = (dr[“Date_Time”].ToString()); conssChkDate = DateTime.Parse(ssChkDate).ToString(“yyyy-MM-dd HH:mm:ss”); tempTime = Convert.ToDateTime(ssChkDate); tempTime = tempTime.AddMinutes(15); TValue1 = (dr[“Value1”].ToString()); TValue2 = (dr[“Value2”].ToString()); TValue3 = (dr[“Value3”].ToString()); TValue4 = (dr[“Value4”].ToString()); TValue5 = (dr[“Value5”].ToString()); TValue6 […]

如何在C#中创建存储过程,然后*将*保存到SQL Server?

我一直在这个墙上撞了一会儿。 我知道你可以用C#代码创建一个存储过程,那个位就行。 但我无法弄清楚的是,然后我可以将该存储过程保存 到SQL Server上 – 但是通过C#代码完成了吗? 场景是:我想通过代码创建测试数据库,然后我想将存储过程添加到新创建的测试数据库(服务器端) – 再次,所有这些都是通过相同的C#代码项目完成的。

是否可以打开SQL连接?

我正在通过COM端口连续接收数据并进行一些解码。 解码完成后,我必须将结果存储在sql数据库中。 我在想,因为解码完成(在一个while循环中总是运行)每秒几十次,如果打开和关闭与sql server的连接是明智的,那么每秒需要将数据存储到数据库十几次。每个while循环或只是让它打开并继续将数据写入数据库。 首先是这可能吗? 其次,如果连接保持打开,第三方应用程序或计算机可以同时访问数据库并读取数据,因为我的程序存储数据?

Oracle SQL:选择具有多列之间最新日期的单行

我的基表结构如下所示: 创建表EXAMPLE_TABLE { ID NUMBER NOT NULL, – 这里的其他栏目, CREATE_USER VARCHAR2(255 BYTE)NOT NULL, CREATE_DATE DATE DEFAULT SYSDATE NOT NULL, UPDATE_USER VARCHAR2(255 BYTE), UPDATE_DATE DATE } 我想要做的是选择具有最高update_date或create_date的行的id。 所以这样的事情(虽然这不起作用 – 在存储过程中将pID定义为out变量): SELECT ID,MAX(GREATEST(CREATE_DATE,UPDATE_DATE)为LAST_MODIFIED 来自EXAMPLE_TABLE 将ID转回pID; 这将返回一个基本上是表中修改的最后一行的id。 帮助不大? PS这是在Oracle11g中。 我目前正在使用MERGE将行插入表中,并使用此方法获取最后一个upserted行的id。 如果你对此有任何建设性的批评(可能有另一种解决方案),我会全力以赴。 我已经阅读了很多关于为什么这是好/坏的论点。 我将在c#中调用此过程,所以其他任何提示都值得赞赏。

Linq to SQL ForeignKeyReferenceAlreadyHasValueException

我看了几个线程,但我没有看到符合我目的的解决方案(至少我不明白我如何实现它) 我有一个使用Linq to SQL的WCF服务,以便检索,更新和删除SQL Server上的对象。 我创建了一个简单的Relational数据库,它在Customer和Order之间有1对多的关系,Order和OrderDetails之间有1对多的关系, 现在我的订单有一个CustomerID的外键,OrderDetails有一个外国的KW订单ID。 但是OrderDetails还在Products表中包含ProductID的FK。 基本上我现在要做的是使用OrderID修改OrderDetails并使用ProductID添加另一个产品。 虽然我一直收到ForeignKeyReferenceAlreadyHasValueException,但我遇到了问题 我写过这个,我知道这是完全错误的,但当时我并不知道(我完全不熟悉SQL,Linq to SQL等)我无法做到这一点。 OrderDetail item = new OrderDetail(); item.OrderID = orderItem.OrderID; item.ProductID = orderItem.ProductID; item.ProductQuantity = orderItem.ProductQuantity; jacksDB.OrderDetails.InsertOnSubmit(item); jacksDB.SubmitChanges(); 我读到我必须使用像这样的公共代码行来映射实体或类似的东西 var order = jacksDB.Orders.Single(o => o.OrderID == orderItem.OrderID); var orderDetail = order.OrderDetails.Single(o => o.OrderID == orderItem.OrderID); orderDetail.ProductID = orderItem.ProductID; orderDetail.ProductQuantity = orderItem.ProductQuantity; orderDetail.Discount = orderItem.Discount; […]

如何在C#中检查数据库中是否存在表(ACCESS或SQL)

我发现了很多关于这个问题的问题。 但有没有简单的陈述来完成这项任务? 用于SQL和ACCESS

使用SqlReader从存储过程中获取多个表

我有一个用户定义的类型,它是SqlServer数据库中的数据表。 我一直在使用Database,DbCommand等来调用存储过程并获取数据集。 数据集很方便,因为它们可以包含多个表。 现在我想传入一个Datatable,所以我尝试了: string _strComText = “stored_procedure_name_changed_to_protect_the_innocent”; _objCom = _objDB.GetSqlStringCommand(_strComText); _objDB.AddInParameter(_objCom, “@BASE_ITEMIDS”, DbType.Object, dtItemIds); _objCom.CommandType = CommandType.StoredProcedure; dataset = _objDB.ExecuteDataSet(_objCom); 但我得到一个例外,“@ BASE_ITEMIDS”不是正确的类型:“传入的表格数据流(TDS)远程过程调用(RPC)协议流不正确。参数1(\”@ BASE_ITEMIDS \“):数据类型0x62 (sql_variant)类型特定的元数据的类型无效。“ 我已经看到用SqlReader完成了这个,但是可以使用sqlReader来获取多个表吗? 如果我的第一个表是空的,我在SqlReader中看不到任何行。

在Entity Framework中创建多对多的联结表

我试图在我的两个实体之间添加多对多的关系。 我需要一个带有附加字段的联结表,我知道这意味着EF不能自动执行此操作,并且我需要为联结表创建实体。 我有以下型号 public class Supplier { public int Id { get; set;} public virtual ICollection UserPermissions { get; set; } } 和 public class User { public string Id { get; set;} public virtual ICollection UserPermissions { get; set; } } 我需要用户在联结表中存储权限。 所以我创建了以下实体 public class SupplierUsers { public string UserId { get; set; } […]

使用SQLite的System.AccessViolationException

现在,我正在处理这个错误: An unhandled exception of type ‘System.AccessViolationException’ occurred in Unknown Module. Additional information: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. 没有调用堆栈,因为没有为抛出它的DLL加载模块。 我有一个应用程序枚举整个注册表,并尝试将所有键/值保存到SQLite数据库文件,作为注册表快照。 它不是贪婪的,如果它无法访问某些键,那些键被丢弃等等: using Microsoft.Win32; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Data; using System.Data.SQLite; using System.Diagnostics; using System.IO; using System.Linq; using System.Text; using System.Threading; […]

ExecutenonQuery无效

我存储过程如下: ALTER PROC pr_Update_Users_Nomination ( @UserID AS VARCHAR(100), @Nominated AS BIT ) AS UPDATE User SET isNominated = @Nominated WHERE EMPID = @UserID; 我想从c#代码调用这个过程:下面是我正在尝试的代码: void OpenConnection() { string Nominated = “False”; //Connection String string sConnString = System.Configuration.ConfigurationManager.ConnectionStrings[“ConString1”].ConnectionString; SqlConnection mySqlCon = new SqlConnection(sConnString); SqlCommand mySqlCom = mySqlCon.CreateCommand(); //Call the stored proc and provide in parameters mySqlCom.CommandText […]