Tag: ado.net

将Ado.net DataReader转换为IDataRecord会产生奇怪的结果

我有一个针对数据库运行的查询,我可以看到有一个31/05/2013的记录。 当我使用ADO.NET从C#运行此查询,然后使用以下代码时,我错过了31/05/2013的记录 var timeSeriesList = new List(); using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { timeSeriesList = reader.Cast() .Select(r => new TimeSeries { MidRate = (double)r[“MidRate”], RiskFactorName = (string)r[“RiskFactorName”], SeriesDate = (DateTime)r[“SeriesDate”] }).ToList(); } } 但是,如果我对此代码使用相同的查询: var timeSeriesList = new List(); using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { var timeSeries = new […]

如何将表名传递给SqlCommand?

我试图通过SqlCommand将表名作为参数传递给我的查询但它似乎没有工作。 这是我的代码; SqlConnection con = new SqlConnection( “server=.;user=sa;password=12345;database=employee” ); con.Open( ); SqlCommand cmd = new SqlCommand( “drop table @tbName” , con ); cmd.Parameters.AddWithValue( “@tbName” , “SampleTable” ); cmd.ExecuteNonQuery( ); con.Close( );

如何在SqlCommand中设置未命名的SQL参数

如果我将未命名的参数添加到我的SqlCommand ,如何在SqlCommand上设置参数值? 我使用命名参数时没有问题,我可以在其中执行SqlCommand.Parameters.AddWithValue() 。 例: Select * from sometable where SomeValue=? and AnotherValue=?

ADO.Net:从SQL服务器表中获取表定义

我正在使用C#编写一个方法,该方法返回有关表的以下信息:列名,列类型,列大小,外键。 有人能指出我如何实现这个目标吗?

从DotNet执行存储过程需要很长时间,但在SSMS中它是立即的

我在SQL Server 2000上有一个存储过程,它有3个参数。 当我使用SqlCommand.ExecuteReader()从DotNet调用存储过程时,大约需要28秒。 当我在SSMS中直接运行相同的查询时,它会立即返回。 当我从存储过程中取出查询并使用DotNet直接运行时,它也会立即返回。 这些是SQL事件探查器会话的结果 SP内部网点 持续时间:28030 阅读:2663365 写道:0 SP内部SSMS 持续时间:450 阅读:23535 写道:65 直接在Dot Net内部查询 持续时间:360 阅读:24865 写道:57 以下事情对我来说很突出: SSMS中的统计数据和Dot Net中的直接查询非常相似 Dot Net SP可以执行大量读取但不会写入 另外两个读取很少,但有几个写入 任何帮助,将不胜感激。 以下是SP的略微观察版本: 我怀疑它是一个查询计划问题,因为即使我从DotNet反复运行它,我总是得到相同的结果。 这是由于IP问题而略微改变的SP版本。 我希望它仍然有意义: SELECT t1.pkiOrderID, t1.fkiBasketId, t1.sOriginBasketCode, t1.dtDateCreated, t1.sOrderCode, t1.fkiUserCde, t1.fkiOrgCde, t1.sApprovalPerson, t1.dtDateApproved, t1.sRequestNo, t1.dtRequiredDate, t1.Requestor, t1.OnBehalfOf, t1.OrderDesc, t1.OrderTypeId, t1.fkiAgentID, t1.fkiAgentRegionID, stat.iStatus, count(oi.pkiOrderItemId) as OrderItems, count(wf.fkiOrderId) […]

从SQL Server到C#读取VARBINARY(MAX)

我需要从SQL Server 2008读取数据行。其中一列的类型是VARBINARY(MAX) 。 在C#中,我想使用out参数来读取它(并且给定的场景主要满足需求)。 但我需要指定参数变量大小来填充C#变量。 在这里我假设8000就够了……但谁知道: database.AddOutParameter(command, “vbCertificate”, DbType.Binary, 8000); 所以问题是: SQL Server 2008的MAX数量是多少? 这种情况可以使用out参数吗?

将DBNull.Value和Empty文本框值传递给数据库

我的页面上有一些文本框可以为空,因为它们是可选的,我有这个DAL代码 parameters.Add(new SqlParameter(“@FirstName”, FirstName)); parameters.Add(new SqlParameter(“@LastName”, LastName)); parameters.Add(new SqlParameter(“@DisplayName”, DisplayName)); parameters.Add(new SqlParameter(“@BirthDate”, BirthDate)); parameters.Add(new SqlParameter(“@Gender”, Gender)); 任何这些字段都可以为空。 问题是当它们为空时,我收到Procedure XXX requires @FirstName which was not supplied 然后我将代码更改为 parameters.Add(new SqlParameter(“@FirstName”, String.IsNullOrEmpty(FirstName) ? DBNull.Value : (object)FirstName)); parameters.Add(new SqlParameter(“@LastName”, String.IsNullOrEmpty(LastName) ? DBNull.Value : (object) LastName)); parameters.Add(new SqlParameter(“@DisplayName”, String.IsNullOrEmpty(DisplayName) ? DBNull.Value : (object) DisplayName)); parameters.Add(new SqlParameter(“@BirthDate”, BirthDate.HasValue ? (object)BirthDate.Value : […]

SqlDataReader读入List

我在C#中编写一个方法来从WCF服务查询SQL Server Express数据库。 我必须使用ADO.NET来执行此操作(然后使用LINQ重写它)。 该方法接受两个字符串( fname, lname ),然后从匹配记录中返回“Health Insurance NO”属性。 我想把它读成一个列表(还有其他一些要检索的属性)。 当前代码返回一个空列表。 我哪里错了? public List GetPatientInfo(string fname, string lname) { string connString = “Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Users\\xxxx\\Documents\\Visual Studio 2010\\Projects\\ADOWebApp\\ADOWebApp\\App_Data\\ADODatabase.mdf;Integrated Security=True;User Instance=True”; SqlConnection conn = new SqlConnection(connString); string sqlquery = “SELECT Patient.* FROM Patient WHERE ([First Name] = ‘”+fname+”‘) AND ([Last Name] = ‘”+lname+”‘)”; SqlCommand command = new […]

什么是sql连接字符串中“最大池大小”的最大允许值

连接字符串中“最大池大小”的最大允许值是多少? 假设这是app.config中的连接字符串 我可以使用的最大值是1024而不是1024? 记住它是最大值,而不是默认值。

ADO.NET或Linq to SQL?

我正在建立一个论坛,它有4个表:用户,主题,评论,主题。 我建立了连接和页面..我开始使用ADO.net方式插入数据并选择数据..但后来我发现要进行更复杂的操作,我需要知道SQL。 所以我正在寻找另一种方式,我发现我可以打开Visual Studio 2010,将Linq添加到生成对象关系设计器的SQL文件中。 我读到了如何编写代码,我看到我只需要使用带有DataContext对象的using语句,并使用简单的代码来更新,添加,删除表中的行。 我想知道,使用一种查询方法有什么好处?