Tag: sql server

从查询中检索单个值

我正在尝试根据字符串字段用户名从单个表中检索整数值。 我已经尝试使用存储过程和直接文本。 当我执行存储过程时,我得到正确的返回值; 然而,正确的结果并没有通过。 以下是两组代码 – 直接文本 – public int GetUserRole(string CUSER) { try { SQLCON = new SqlConnection(connectionString); SQLCON.Open(); SQLCommand = new SqlCommand(); SQLCommand.CommandType = CommandType.Text; SQLCommand.Parameters.Add(“USUsername”, SqlDbType.VarChar).Value = CUSER; SQLCommand.CommandText = “SELECT USRole FROM tblUser WHERE USUsername = CUSER”; Int32 USRole = (Int32) SQLCommand.ExecuteScalar(); return USRole; } catch { HttpContext.Current.Response.Redirect(“~/ErrorRedirect.aspx”, false); return 0; […]

如何将值从存储过程返回到EF

我试图通过EF调用存储过程并从存储过程中检索返回值。 我用这个答案作为指导。 这是我的存储过程: CREATE PROCEDURE [dbo].[usp_test] ( @result int OUT ) AS BEGIN –DO STUFF SET @result = 0 END 以下是我如何从EF调用它: var status = new SqlParameter { ParameterName = “result”, DbType = DbType.Int32, Direction = ParameterDirection.Output }; var result = context.Database.SqlQuery(“EXEC usp_test @result”, status); var wasSuccessful = result.First() == 1; if (!wasSuccessful) { //DO STUFF […]

为什么要设置命令对象参数的size参数呢?

我们的数据访问层使用命令对象与sql server进行通信。 在大多数情况下,我已将字段大小(与sql server中的列大小相匹配)硬编码到命令参数构建器中。 如: SqlParameter param = new SqlParameter(“@name”, NVarChar, 4000); 在这里指定一个值(在这个例子中为4000)而不是将其保留为0有什么好处? 当列大小更改时,必须重新编译时会很痛苦。

通过C#转义SQL INSERT INTO中的特殊字符

我搜索过谷歌,但尚未找到任何解决方案。 基本上我有一个在图库中设置的评论供稿(类似于facebook或stackoverflow评论)。 用户可以发表评论并阅读其他用户发布的评论。 这工作正常。 但是,如果用户尝试使用撇号发布评论,我会得到一个不错的小Web应用程序错误: ‘s’附近的语法不正确。 字符串’)’后面的未闭合引号。 我发布到SQL的评论是81。 我想要一个能够逃脱所有特殊字符的解决方案,这样无论用户输入什么,无论什么,都不会出错。 代码背后 Fetcher.postUserComments(connectionString, imagePath, comments.ToString(), userId); 提取程序 sqlCom.CommandText = “INSERT INTO dbo.Table(userId, imagePath, userComments, dateCommented) VALUES (‘” + userId + “‘, ‘” + imagePath + “‘, ‘” + comments + “‘, ‘” + theDate + “‘)”; 数据类型是字符串,我也尝试过.ToString()但没有运气。 提前感谢任何有用的输入。

错误:将nvarchar数据类型转换为smalldatetime数据类型会导致超出范围的值

嘿所有我正在尝试执行以下插入查询 SqlDataSource userQuizDataSource = new SqlDataSource(); userQuizDataSource.ConnectionString = “Data Source=localhost\\SQLEXPRESS;Initial Catalog=quizApp;Integrated Security=True”; userQuizDataSource.InsertCommand = “INSERT INTO [UserQuiz] ([DateTimeComplete], [Score], [UserName]) VALUES (@DateTimeComplete, @Score, @UserName)”; userQuizDataSource.InsertParameters.Add(“DateTimeComplete”, DateTime.Now.ToString()); userQuizDataSource.InsertParameters.Add(“Score”, score.ToString()); userQuizDataSource.InsertParameters.Add(“UserName”, User.Identity.Name); int rowsAffected = userQuizDataSource.Insert(); Buti不断收到以下错误: 将nvarchar数据类型转换为smalldatetime数据类型会导致超出范围的值。 该语句已终止。 谁能帮我吗?

SqlBulkCopy – 给定的ColumnName与源或目标中的任何列都不匹配

我正在尝试使用SqlBulkCopy将数据复制到SQL数据库表中,但它(错误地)说列不匹配。 他们匹配。 如果我使用断点来查看要映射的列的名称,它们是正确的。 错误消息显示列的名称,并且它是正确的。 这是我的方法。 我有一个相同的方法可以工作,唯一的区别是它从哪里获取列名称。 但是,包含列名的字符串完全相同。 public static bool ManualMapImport(DataTable dataTable, string table) { if(dataTable != null) { SqlConnection connection = new SqlConnection(connectionString); SqlBulkCopy import = new SqlBulkCopy(connection); import.DestinationTableName = “[” + table + “]”; foreach (string s in Global.SelectedColumns) { /* The s string variable here is the EXACT same as the c.ToString() […]

读取器关闭时无效尝试调用MetaData?

我正在从datareader运行if else语句来查询表数据并激活/取消激活页面上的某些控件。 当我关闭块时,我实现了一个using语句来自动关闭连接和读取器,但是我的每个if else语句仍然会让读者关闭错误。 少了什么东西? 代码如下: string comnt = “SELECT StatusId FROM Submission WHERE SubmissionId =” + x; using (SqlConnection editConn = new SqlConnection(connectionString)) { editConn.Open(); using (SqlCommand statCmd = new SqlCommand(comnt, editConn)) { SqlDataReader dr = statCmd.ExecuteReader(); dr.Read(); if (dr.GetInt32(0) > 0) { PanelComment.Visible = true; PanelQuote.Visible = false; LnbFid.Visible = false; LnbCrim.Visible = […]

.Net SqlConnection,服务器身份validation和证书固定

使用s SqlConnection时如何固定证书? 从SqlConnection连接字符串参数关键字和值 ,我知道我可以将Encrypted设置为true以强制(鼓励?)使用SSL / TLS。 但是,为了固定证书,我认为我们需要使用ServicePointManager ServerCertificateValidationCallback (下面的示例代码由ArneVajhøj提供,用于HTTP / HTTPS)。 我不清楚如何将PinCertificate (从ServicePointManager )连接到SqlConnection 。 更新:在microsoft.public.dotnet.languages.csharp上与ArneVajhøj交谈,似乎无法对连接进行所需的控制。 Vajhøj提供了一个指向加密SQL Server连接的链接。 public static void Main(string[] args) { ServicePointManager.ServerCertificateValidationCallback = PinCertificate; WebRequest wr = WebRequest.Create(“https://www.google.com/”); wr.GetResponse(); } public static bool PinCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { byte[] chash = certificate.GetCertHash(); StringBuilder sb = new StringBuilder(chash.Length * […]

如何侦听SQL Server数据库更改

使用.Net 4.0和SQL Server 2008 R2 我一直在研究利用SqlDependency / SqlNotifications来监控一些数据库结构。 对SQL Server服务代理使用SqlDependency / SqlNotifications是最好的过程/实践吗? 人们是否使用其他方法来完成类似的任务? 我总是可以轮询变化,但我宁愿不必那样做。 另一方面,我也不想在我们现有的环境中引入复杂的场景。 编辑(潜在选项): 的SqlDependency Service Broker外部激活

将SQL CASE WHEN语句转换为C#

我是暑期编程实习的第一周,他的任务是使用LINQPad将SQL Server 2008语句转换为C#。 一旦我这样做并使其正常工作,我可以将其输入VS并根据需要进行调整。 问题是我运行SQL语句我不知道如何转换。 在我的C#类中,我们没有将SQL语句转换为C#,我们只创建了一个字符串变量,将SQL语句分配给变量,然后将该变量赋值给OleDbCommand对象。 我的导师在这个漫长的周末度过了rest日,我几乎独自一人,对于该怎么做并且需要一些帮助毫无头绪。 有几十个喜欢这个,如果我能看到如何做一个,我可以想出其余的。 这是SQL语句: ,[hrs].{Hours] – SUM( CASE WHEN [UnitState].[UnitStateTye] ‘ACTIVE’ THEN [Allocation].[AllocatedEnergyMwh] ELSE 0 END / CAST([Unit].[NetDependableCapacity] AS FLOAT)) AS SH 我很确定这是一个if语句: if [UnitState].[UnitStateType] does not equal active then SH equals [hrs].[Hours] minus the the sum of [Allocation].[AllocatedEnergyMwh] / (float)[Unit].[NetDependableCapacity]. else SH = [hrs].[Hours] 我尝试了以下代码,我认为这不会起作用但需要从某个地方开始: var results = (from […]