Tag: ado.net

使用带有connection.open的语句

我正在查看一些代码并与同事讨论。 特别是一段看起来像这样的代码。 [Test] public void TestNormalWay() { using(var cn = GetConnection()) { cn.Open(); // do stuff } } 问题出现了: “为什么不将cn.Open移动到GetConnection方法中。” 我说如果“打开”抛出一个exception处理就不会被调用。 他的回答是 “那么什么。连接没有打开,为什么需要关闭(或处置)?” 对我来说,这只是一个不想知道我是否需要处理/关闭的问题所以我会重复cn.Open代码而不是将其移动到共享函数中。 但它很有趣……所以我在SQL Server连接池(ADO.NET)上做了一些阅读 对我而言,目前尚不清楚是否存在调用cn.Open并抛出exception需要调用dispose的场景。 所以在下面的例子中,“TestNormalWay”和“WhyNotDoItThisWay”之间是否存在任何差异 protected static DbConnection GetConnection() { DbConnection cn = new SqlConnection(“SomeConnecitonstring… “); return cn; } protected static DbConnection GetConnectionDangerousVersion() { DbConnection cn = new SqlConnection(“SomeConnecitonstring… “); cn.Open(); // […]

使用SqlBulkCopy插入数据时出错

我正在尝试使用SqlBulkCopy批量插入数据到SQL 2008。 这是我的表: IF OBJECT_ID(N’statement’, N’U’) IS NOT NULL DROP TABLE [statement] GO CREATE TABLE [statement]( [ID] INT IDENTITY(1, 1) NOT NULL, [date] DATE NOT NULL DEFAULT GETDATE(), [amount] DECIMAL(14,2) NOT NULL, CONSTRAINT [PK_statement] PRIMARY KEY CLUSTERED ( [ID] ASC ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS […]

.NET – 如何从数据集中检索特定项?

我有以下代码连接到数据库并将数据存储到数据集中。 我现在需要做的是从数据集中获取单个值(实际上它是两个第一行第4列和第5列) OdbcConnection conn = new OdbcConnection(); conn.ConnectionString = ConfigurationManager.ConnectionStrings[“ConnectionString2”].ConnectionString; DataSet ds = new DataSet(); OdbcDataAdapter da = new OdbcDataAdapter(“SELECT * FROM MTD_FIGURE_VIEW1”, conn); da.Fill(ds) 所以,我需要获得两个特定的项目并将它们存储为int,psudo代码将是 int var1 = ds.row1.column4 int var2 = ds.row1.column5 关于我如何做到这一点的任何想法? 此外,有些人也可以了解数据表,因为这可能与我如何做到这一点有关。

.NET系统类型为SqlDbType

我正在寻找.Net System.Type和SqlDbType之间的智能转换。 我发现它是以下想法: private static SqlDbType TypeToSqlDbType(Type t) { String name = t.Name; SqlDbType val = SqlDbType.VarChar; // default value try { if (name.Contains(“16”) || name.Contains(“32”) || name.Contains(“64”)) { name = name.Substring(0, name.Length – 2); } val = (SqlDbType)Enum.Parse(typeof(SqlDbType), name, true); } catch (Exception) { // add error handling to suit your taste } return […]

如何判断SqlConnection是否有附加的SqlDataReader?

现在这更像是一种好奇而不是实际目的。 如果您打开了一个SqlConnection并将SqlDataReader附加到它,然后尝试使用相同的SqlConnection运行另一个查询,那么它将抛出一个错误。 我的问题是SqlConnection如何知道读者是否附加到它。 HasDataReader没有公共属性或任何东西,所以SqlConnection类如何知道? 原始问题:(不再相关) 嗨,我正在为连接池和我们发生的更常见的错误设置一个小东西(它总是一个简单的修复,但我们只是记不起reader.Close() !)它是我们什么时候许多类/方法使用的连接和一个方法打开数据读取器并忘记关闭它。 这并不是很糟糕,因为很多时候你需要做的就是进入调试器并升级到一级并在它之前看到它并检查它是否有一个未闭合的数据读取器。 现在,这是一个更大的问题。 在这个连接池中,如果一个datareader是打开的,那么直到一个线程获得连接并尝试使用它并且最初打开数据读取器的东西可能不再存在时,它就不可知。 非常简单,如何检测数据读取器是否在连接上打开,是否有办法在不关闭连接的情况下关闭阅读器?

如何使用DataTable.Select()来选择Null / empty值?

从db填充的数据表在某些单元格中具有空值。 结果数据库SP返回在它们中有Null但在DataTable中这些值显示为”或空单元格。 请指导我如何使用Select()来选择这些dbnull / empty行。 谢谢

将对象列表传递给SQL Server存储过程并使用asp.net核心插入记录

我正在研究asp.net应用程序。 我使用ado.net访问SQL Server数据库并执行CRUD。 我想一次插入多个记录。 为此,我在数据库中添加了一个自定义类型,并添加了如下存储过程: CREATE TYPE [dbo].[UserTableType] AS TABLE ( [FirstName] [nvarchar](100) NULL, [LastName] [nvarchar](100) NULL, [UserName] [nvarchar](100) NULL, [Password] [nvarchar](100) NULL, [IsActive] [bit] NULL, [IsDeleted] [bit] NULL, [CreatedBy] [int] NULL, [CreatedAt] [datetime] NULL, [UpdatedBy] [int] NULL, [UpdatedAt] [datetime] NULL, [Email] [nvarchar](100) NULL ) GO 和存储过程是这样的: CREATE PROCEDURE [dbo].[sp_InsertUser] @UserTableType UserTableType READONLY AS BEGIN […]

启用ODP.Net日志记录

任何人都可以帮我在Windows XP机器上启用ODP.Net日志记录吗? 我用Google搜索并发现以下链接,但它对我不起作用。 http://download.oracle.com/docs/html/E10927_01/featConfig.htm 我在注册表中将“TraceLevel”设置为“63”但它没有帮助 基本上我想通过日志捕获从我的C#代码发生的所有数据库调用。 我希望Oracle有一个像“SQL Profiler”这样的工具。

如何将完整的SQL表导出到XML

我的主要编码理想是在.net应用程序上。所以我在应用程序设计方面的技能有限。 我试图将整个表从数据库(使用视图)导出到XML文件(然后希望将其导出到电子表格 – 我看起来并且找不到直接的方法)。 我使用以下代码成功地只将1列导出到xml文件: DataConn.UserName = “***”; DataConn.Password = “***”; DataConn.SqlServer = “***”; DataConn.Database = “***”; const string strSql = “SELECT TOP 1 * FROM vwGetStaffDetails FOR XML AUTO”; using (SqlCommand sqlComm = new SqlCommand(strSql, DataConn.Connect()) { CommandType = CommandType.Text }) { string result = sqlComm.ExecuteScalar().ToString(); File.WriteAllText(@”C:\Temp\text.xml”, result); } 每当我使用ExecuteReader或ExecuteXmlReader ,我都没有得到任何实际结果。 我怎么能得到所有的田地? 编辑:我必须使用Top 1来使Execute […]

entity framework – 冗余连接字符串

我在我的项目中使用Entity Framework 4。 框架已创建自己的连接字符串,因此我的web.config connectionStrings部分文件如下所示: 名为ApplicationServices的第一个连接字符串是我原来的连接字符串。 第二个,称为VNKEntities ,是在生成模型时创建的。 当我检查生成的* .edmx文件时,我发现此模型正在引用其连接字符串,如下所示: /// /// Initializes a new VNKEntities object using the connection string found in the ‘VNKEntities’ section of the application configuration file. /// public VNKEntities() : base(“name=VNKEntities”, “VNKEntities”) { this.ContextOptions.LazyLoadingEnabled = true; OnContextCreated(); } 我的问题是如何摆脱VNKEntities连接字符串,只留下我将从我的模型中引用的ApplicationServices ? 我想只有一个连接字符串到数据库,因为我只使用一个数据库(将name=VNKEntities的构造函数参数替换为name=ApplicationServices不起作用)。 问候