小编zhu*_*ien的帖子

内部异常的单元测试

我正在使用Visual Studio的集成框架编写一些单元测试.我需要编写一些测试用例,在抛出适当的异常时传递.问题是我需要测试的异常是嵌套在更一般的异常中的内部异常.是否有一些简单的解决方案或我是否需要扩展整个功能.我目前正在使用[ExpectedException]属性,但在这种情况下它不会有很多好处.

我也很好奇当我们使用[ExpectedException]时会发生什么,而我们在测试中也有一些Assert逻辑.是否评估了条件(抛出异常并且Assert语句结果有效)或者在抛出正确的异常后立即通过测试?

c# unit-testing entity-framework

13
推荐指数
3
解决办法
5941
查看次数

使用sql参数转义SQL LIKE语句中的特殊字符

我有一张包含产品的表格.我需要查询查找所有匹配结果到用户输入值.我SqlParameter用于插入输入.

SqlCommand findProcutsByPattern = new SqlCommand(
    "SELECT *" +
    " FROM [Products]" +
    " WHERE ProductName LIKE @pattern", connection);

findProcutsByPattern.Parameters.AddWithValue("@pattern", '%' + pattern + '%');
Run Code Online (Sandbox Code Playgroud)

当用户输入字符串包含'_'或'%'时,问题就出现了,因为它们被解释为特殊字符.另一方面,考虑到这一点:

命令对象使用参数将值传递给SQL语句或存储过程,从而提供类型检查和验证.与命令文本不同,参数输入被视为文字值,而不是可执行代码.

我不应该有这样的问题.我是否需要替换/转义输入字符串中的所有'_'和'%',或者是否有更优雅的解决方案.我希望输入被视为文字.

我在表中有一些记录,其中包括名称中的特殊字符(N_EW,N\EW,N%EW,N"EW,N'EW).指定\,"'作为输入工作正常(考虑它们)作为文字).

c# sql sql-server escaping sqlparameter

4
推荐指数
1
解决办法
1万
查看次数

c#中字符串的比较

因此,正如我们所知,对象(在当前示例中 - 字符串)相对于它们在堆中的引用进行比较.因此,如果:

string a = "something"; 
string b = "something"; 
bool isEqual = (a == b);
Run Code Online (Sandbox Code Playgroud)

将投入的值一个在字符串池中并找到的值后b是相同同时通过池搜索,将指定相同的参考变量b.好的,这很清楚.但是如果发生了什么:

string a = "somethingNew";
bool isEqual = (a == "somethingNew");
Run Code Online (Sandbox Code Playgroud)

这些比较文字如何在内存中表示(如果有的话)以及在这种情况下如何完成整个比较过程?

c# string string-comparison

3
推荐指数
2
解决办法
296
查看次数

以日期为参数在 T-SQL 中执行存储过程

我需要创建一个以供应商名称、开始日期和结束日期为参数的存储过程,并计算给定时间间隔内该供应商的总收入。我正在使用北风。该过程如下所示:

CREATE PROC usp_GetTotalIncomeByPeriod (
    @companyName nvarchar(40),
    @startDate date,
    @endDate date)
AS
    BEGIN
        SELECT SUM(od.UnitPrice * od.Quantity * (1 - od.Discount))
        FROM Orders o
            JOIN [Order Details] od
                ON o.OrderId = od.OrderId
            JOIN Products p
                ON od.ProductID = p.ProductID
            JOIN Suppliers s
                ON p.SupplierID = s.SupplierID
        WHERE s.CompanyName = @companyName
            AND (o.OrderDate BETWEEN @startDate AND @endDate);
    END
GO
Run Code Online (Sandbox Code Playgroud)

问题是我实际上无法使用以下调用执行它:

EXEC dbo.usp_GetTotalIncomeByPeriod @companyName = 'Exotic Liquids', 
                                    @startDate = DATEFROMPARTS(1900, 01, 01),
                                    @endDate = DATEFROMPARTS(2000, 1, 1);
Run Code Online (Sandbox Code Playgroud)

DATEFROMPARTS 函数本身似乎可以正常工作,但我无法使其作为参数工作。它不断给我“接近 1900 年的语法不正确”。我想念什么?

t-sql sql-server stored-procedures date

2
推荐指数
1
解决办法
7127
查看次数

没有舍入的金钱值的SQL Server数据类型

我有数字值,小数点后6位小数,我想存储在MSSQLServer中.但是,当我使用货币类型时,值会四舍五入到小数点后2-4位,我不希望这样.我应该使用什么数据类型?

sql sql-server sqldatatypes

1
推荐指数
1
解决办法
117
查看次数