Tag: sql

从IDataReader读取字段时Intermittent System.IndexOutOfRangeException

我在代码中有一个非常奇怪的问题,我不希望它会失败。 它是一个网站,有一些流量但不是很大,基于AspDotNetStoreFront。 尝试从阅读器读取数据库字段时,站点间歇性崩溃。 这发生在网站上的各个地方。 这个代码的一个例子是在对象pValue = rs [“PropertyValueString”]的行下面; private Dictionary GetPropertValuePairs(string userName) { string query = string.Format(“select PropertyName, PropertyValueString from dbo.profile with(nolock) where CustomerGUID = {0} and StoreID = {1}”, DB.SQuote(userName),AppLogic.StoreID()); Dictionary propertyValues = new Dictionary(); using (SqlConnection conn = new SqlConnection(DB.GetDBConn())) { conn.Open(); using (IDataReader rs = DB.GetRS(query, conn)) { while (rs.Read()) { string […]

如何为SQL CLR存储过程提供sql_variant参数?

如何将sql_variant参数添加到SQL CLR存储过程? 使用System.Object不起作用,我没有看到任何可以使用的属性。 [Microsoft.SqlServer.Server.SqlProcedure] public static void ClearOnePartition( SqlString aString , /* I want this to be a sql_variant */ object aVariant ) { //do stuff here }

SQL CONNECTION最佳实践

目前讨论了具有单个sql连接体系结构的优缺点。 详细说明我们正在讨论的是,在应用程序创建时打开一个sql连接,并在应用程序关闭或错误关闭sql连接。 并且根本不创建另一个连接,而只使用那个与DB交谈。 我们想知道社区的想法。

从一行中的字符串列表构建SQL“where in”语句?

我有一个List(Of String),对应于数据库表中的“types”。 我们正在使用DB2 ADO.NET提供程序,我的最终查询需要看起来像这样: select * from table where type in (@type1, @type2, @type3, @type4) 在过去,我使用ForEach循环构建了查询参数/主机变量列表,但我真的想找到一种方法来在一行中构建它们。 当然,我可以加入所有字符串,但添加“@”和递增数字让我感到头疼。 任何人对如何做到这一点都有任何想法?

执行entity framework时,CONTEXT_INFO丢失.SaveChanges(重载)

解: 你可以找到: 这里 如果在操作之前尚未打开连接,则对象上下文将打开该连接。 如果对象上下文在操作期间打开连接,则它将始终在操作完成时关闭连接。 如果手动打开连接,则对象上下文不会将其关闭。 调用Close或Dispose将关闭连接。 问题是EF会打开和关闭SetUserContext的连接,所以我会松开CONTEXT_INFO。 为了保持它,我需要手动打开连接并在SaveChanges之后关闭它 public int SaveChanges(string modifierId) { Database.Connection.Open(); SetUserContext(modifierId); var changes = base.SaveChanges(); Database.Connection.Close(); return changes; } 题 : 该系统适用于数据仓库。 数据库必须知道谁修改它并在Audit表中保存任何更改。 为了达到这个结果,我主要依靠触发器和程序: 此函数将userId保存在CONTEXT_INFO中: CREATE PROCEDURE [dbo].[SetUserContext] @userId NVARCHAR (64) AS BEGIN SET NOCOUNT ON; DECLARE @context VARBINARY(128) SET @context = CONVERT(VARBINARY(128), @userId) SET CONTEXT_INFO @context END 这个可以在任何地方使用来获取userId: CREATE […]

父子一对一关系相同的表

我有一个关于如何在Microsoft SQL-Server 2012中实现表关系的问题。 我有一个表(MyTable),它应该包含父/子结构。 一个父母可能有一个孩子,一个孩子只有一个父母。 这是一种经典的一对一关系。 最顶层的条目显然可能没有父级。 (这是通过可空的属性建模的) 当我尝试在MS-SQL中对此进行建模时,我收到如下表。 这是我的代码: CREATE TABLE [dbo].[MyTable]( [Id] [uniqueidentifier] PRIMARY KEY NOT NULL, [Name] [nvarchar](200) NOT NULL, [ParentObjectId] [uniqueidentifier] NULL ) GO ALTER TABLE [dbo].[MyTable] WITH CHECK ADD CONSTRAINT [FK_MyTable_ParentObject] FOREIGN KEY([ParentObjectId]) REFERENCES [dbo].[MyTable] ([Id]) GO ALTER TABLE [dbo].[MyTable] WITH CHECK ADD CONSTRAINT [Unique_ParentId] UNIQUE(ParentObjectId) GO ALTER TABLE [dbo].[MyTable] […]

获取SQL数据并将其显示在文本框中?

在过去的几天里,我试图从我的SQL表中获取数据并将其放入我的文本框中。 表名:“check”。 我正在使用的代码: SqlDataReader myReader = null; connection = new SqlConnection(System.Configuration.ConfigurationManager .ConnectionStrings[“ConnectionString”].ConnectionString); connection.Open(); var command = new SqlCommand(“SELECT * FROM [check]”, connection); myReader = command.ExecuteReader(); while (myReader.Read()) { TextBox1.Text = myReader.ToString(); } connection.Close(); 结果我没有得到任何结果。 谁知道为什么? 也许我没有正确调用SQL?

SQL查询错误 – “列不能为空”

我有一个SQL查询: String S = Editor1.Content.ToString(); Response.Write(S); string sql = “insert into testcase.ishan(nmae,orders) VALUES (‘9′,@S)”; OdbcCommand cmd = new OdbcCommand(sql, myConn); cmd.Parameters.AddWithValue(“@S”, S); cmd.ExecuteNonQuery(); 错误:在System.Data.Odbc.OdbcConnection.HandleError中,列’orders’不能为null

在SqlCommand中调用函数

public void CreateMySqlCommand() { SqlCommand myCommand = new SqlCommand(); myCommand.CommandText = “SELECT * FROM Categories ORDER BY CategoryID”; myCommand.CommandTimeout = 15; myCommand.CommandType = CommandType.Text; } 我可以在myCommand.CommandText中使用Sql Server函数吗?为什么?

用NHibernate对连续全名进行模糊搜索

我试图将以下SQL转换为NHibernate: SELECT * FROM dbo.Customer WHERE FirstName + ‘ ‘ + LastName LIKE ‘%’ + ‘bob smith’ + ‘%’ 我试图做这样的事情,但它不起作用: name = “%” + name + “%”; var customers = _session.QueryOver() .Where(NHibernate.Criterion.Restrictions.On(c => c.FirstName + ‘ ‘ + c.LastName).IsLike(name)) .List(); 我基本上要做的是能够在文本框中搜索客户名称,其示例值为“bob smith”,并使用上面SQL中的LIKE表达式搜索数据库。 如果我要错误地搜索FirstName和LastName列,请帮我一个替代方案,但上面的SQL查询可以得到我需要的东西。 更新2个解决方案: 所以我现在找到了解决这个问题的两个方案。 一种是使用Criteria API。 以下post的答案非常有用: https : //stackoverflow.com/a/2937100/670028 我找到了另一个解决方案,感谢我的一位有用的同事建议使用LINQ投影和匿名类型。 这是使用LINQ的解决方案: var customers […]