Tag: tsql

在ASP.NET(C#)中实现安全,独特的“一次性”激活URL

我有一个场景,我正在构建的网站的用户需要能够在不必登录的情况下将一些基本信息输入到webform中。 该站点正在使用ASP.NET / C#开发,并使用MSSQL 2005作为其关系数据。 将向用户发送来自站点的电子邮件,为他们提供唯一链接以输入他们所需的特定信息。 该电子邮件与我们在注册论坛等网站时所获得的电子邮件风格非常相似,其中包含一个随机生成的唯一URL参数,专门用于单一目的(例如validation论坛的电子邮件地址)。 我的问题是关于这个问题的安全实现。 我正在考虑使用GUID作为唯一标识符,但我不确定它在安全领域的影响。 GUID是否足够长,以至于不能轻易猜到值(或随着时间的推移强迫)? .NET的GUID实现是否足够随意,因为在“密钥空间”中生成所有可能值的机会相等? 如果使用GUID是一种可接受的方法,那么网站是否应该通过URL重写或通过将数据表中的信息与GUID相关联来重定向到信息? 使用URL重写会隐藏数据的真正来源吗? 我应该考虑使用TSQL的SELECT NEWID()作为.NET实现的GUID生成器吗? 我对这个问题的处理方法完全错了吗? 非常感谢, 卡尔

在c#中的东西函数实现

我需要知道c#是否有任何函数等于sql函数的stuff ,它根据给定的开始和长度将输入字符串替换为原始字符串。 编辑添加样本: select stuff(‘sad’,1,1’b’) select stuff(original string, start point, length,input string) 输出会”bad”.

InvalidOperationException未关闭连接。 连接的当前状态是打开的

为什么此代码会抛出无效的操作exception? private SqlCommand cmd; // initialized in the class constructor public void End(string spSendEventNotificationEmail) { try { cmd.CommandText = spSendEventNotificationEmail; cmd.Parameters.Clear(); cmd.Parameters.Add(“@packetID”, SqlDbType.Int).Value = _packetID; cmd.Parameters.Add(“@statusID”, SqlDbType.Int).Value = _statusID; cmd.Parameters.Add(“@website”, SqlDbType.NVarChar, 100).Value = Tools.NextStep; cmd.Connection.Open(); cmd.ExecuteNonQuery(); } finally { cmd.Connection.Close(); cmd.Parameters.Clear(); cmd.Dispose(); } endCall = true; }

在C#中访问SQL Server存储过程输出参数

我有一个简单的SQL Server存储过程: ALTER PROCEDURE GetRowCount ( @count int=0 OUTPUT ) AS Select * from Emp where age>30; SET @count=@@ROWCOUNT; RETURN 我试图访问以下C#代码中的输出参数: SqlConnection con = new SqlConnection(); con.ConnectionString = “Data Source=localhost\\SQLEXPRESS;Initial Catalog=answers;Integrated Security=True”; SqlCommand cmd = new SqlCommand(); cmd.Connection = con; cmd.CommandText = “GetRowCount”; cmd.CommandType=CommandType.StoredProcedure; cmd.Parameters.Add(new SqlParameter(“@count”, SqlDbType.Int)); cmd.Parameters[“@count”].Direction = ParameterDirection.Output; con.Open(); SqlDataReader reader=cmd.ExecuteReader(); int ans […]

数据读取器与指定的entity framework不兼容

我有一个方法,将从sproc中返回裸min结果以填充选择菜单。 当我想要裸min结果时,我将bool getMin = true传递给sproc,当我想要完整记录时,我传递bool getMin = false。 这导致Entity FrameWork错误“ 数据读取器与指定的不兼容 ” 错误最相关的部分 {“Message”:“发生错误。”,“ExceptionMessage”:“数据读取器与指定的’CatalogModel.proc_GetFramingSystems_Result’不兼容。类型的成员’FrameType’在其中没有相应的列具有相同名称的数据读取器。“,”ExceptionType“:”System.Data.EntityCommandExecutionException“, 显然错误告诉我,当数据读取器试图设置属性’FrameType’时,查询结果中没有。 现在我理解了这个错误,我想知道的是,我正在为了将这个sql sproc分成两个sprocs而进行goning或者是否有解决方法? 我的function如下 public static IEnumerable GetFramingSystems(int brandID, string frameType, string glazeMethod, bool getMin) { using (CatalogEntities db = new CatalogEntities()) { return db.proc_GetFramingSystems(brandID, frameType, glazeMethod, getMin).ToList(); }; } 我的TSQL如下 ALTER proc [Catelog].[proc_GetFramingSystems] @BrandID INT, @FrameType VARCHAR(26), @GlazeMethod VARCHAR(7) =’Inside’, […]

DataGridView – 如何仅为单个列设置货币格式

我正在尝试将datagridview用于购物篮。 我有它显示客户的篮子,但我希望它显示价格列的货币,但我也有一个数量列,所以如果我把默认样式作为货币,那么它将更改两列货币格式。 我想要做的是将货币格式添加到价格列,但不添加到数量列。 这是显示购物篮的代码(Form_load) using (var con = new SqlConnection(connectionString)) { SqlDataAdapter dataadapter = new SqlDataAdapter( “select p.productname ‘Product Name’, b.productquantity ‘Quantity’, c.categoryname ‘Category’, p.price ‘Current Price’ ” + “from basket b join products p on b.productid = p.productid ” + “join Categories c on c.categoryid = p.categoryid ” + $”where b.customerid = {CustomerId}”, con); […]

在C#中存储SqlServer的raiserror消息

如何在C#中存储SQLSERVER的raiserror消息?

日期时间问题与01/01/1900

我在sql server中有一个datetime列及其可选字段,如果用户决定不输入,那么我想在表中插入值为NULL,我定义如下: @deadlineDate datetime = null 当我插入到SQL服务器时,我在asp.net中有这个代码 private DateTime? GetDeadlineDate() { DateTime? getDeadlineDate = null; if (!string.IsNullOrEmpty(DeadlineDate.SelectedDate)) { getDeadlineDate = DateTime.Parse(DeadlineDate.SelectedDate).Date; } if (!getDeadlineDate.HasValue) { return null; } return getDeadlineDate.Value; } 但问题是:它的插入 1900-01-01 00:00:00.000 在sql表中而不是NULL 我在这做错了什么? 更新: private DateTime? GetDeadlineDate() { DateTime? getDeadlineDate = null; if (!string.IsNullOrEmpty(DeadlineDate.SelectedDate)) { getDeadlineDate = DateTime.Parse(DeadlineDate.SelectedDate).Date; } if (!getDeadlineDate.HasValue) { […]

如何从SQL Server获取下一个标识值

我需要从SQL Server获取下一个标识值。 我用这个代码: SELECT IDENT_CURRENT(‘table_name’) + 1 这是正确的,但是当table_name为空(并且下一个标识值为“1”)时返回“2”但结果为“1”

与entity framework相同的“CASE WHEN THEN”(T-SQL)是什么?

我有一个Transact-SQl请求,我使用了很多,我希望得到entity framework的等价物。 但我不知道如何用EF制作“CASE WHEN”声明。 这是我的请求的简化代码: SELECT Code, SUM(CASE WHEN Month=1 THEN Days Else 0 END) AS Jan, FROM MyTable GROUP BY Code 你能告诉我它是否可能以及如何用EF做到这一点?