c# - MVC视图模型中的SQL查询
问题描述
我有以下标量值 SQL Server 函数:
CREATE FUNCTION [dbo].[udf_Share]
(@date1 datetime,
@date2 nvarchar(max),
@date3 nvarchar(max) )
RETURNS bit
AS
BEGIN
DECLARE @date2_ datetime = CAST(@date2 AS datetime)
DECLARE @date3_ datetime = CAST(@date3 AS datetime)
RETURN (SELECT
CASE
WHEN (@date1 < @date3_ AND @date2_ >= @date3_) OR
(@date2_ < @date3_ AND @date1 >= @date3_)
THEN 1
ELSE 0
END)
END
以及以下视图模型:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Data;
namespace TestApp
{
class Program
{
static void Main(string[] args)
{
string connString = @"Server =.\SQL2K17; Database = SampleDB; Trusted_Connection = True;";
try
{
using (SqlConnection conn = new SqlConnection(connstring))
{
string query = @"SELECT dbo.udf_Share(@date1, @date2, @date3); ";
SqlCommand cmd = new SqlCommand(query, conn);
cmd.Parameters.Add(new SqlParameter("@date1", "01/01/2016"));
cmd.Parameters.Add(new SqlParameter("@date2", "01/01/2021"));
cmd.Parameters.Add(new SqlParameter("@date3", "01/10/2019"));
conn.Open();
var objectResult = cmd.ExecuteScalar();
int Result = Convert.ToInt32(objectResult);
Console.WriteLine(Result.ToString());
conn.Close();
}
}
catch (Exception ex)
{
Console.WriteLine("Exception: " + ex.Message);
}
}
}
}
建立连接但我无法使用该功能。也许我没有正确传递参数。我究竟做错了什么?
提前致谢!
解决方案
@date1
是必需的DateTime
。相反,您将其传递为string
. 修改函数并使其nvarchar
与其他函数一样,或者执行以下操作:
SqlParameter parameter1 = cmd.Parameters.Add("@date1", System.Data.SqlDbType.DateTime);
parameter1.Value = _your_datetime_value_;
推荐阅读
- javascript - 从条件内容中触发 onClick 函数
- django - 单元测试中的 API 完整路径
- django - 如何自动更改对象的状态?
- load-testing - 如何获得最小值、平均值、最大值。标准。ALM 测试用例中运行的每个测试脚本的偏差?
- docker - Docker 容器 tensorflow/tensorflow:latest-gpu-jupyter 提供 0 个内核
- mqtt - 使用物理设备时无法连接到 MQTT Broker
- r - 执行分位数回归时 R 中 quantreg 输出的尴尬行为
- java - 房间数据库迁移冻结屏幕
- .net-core - 从 C# 使用 AwsSdkCall
- python - 通过 Traci 操作三个传入车道的交叉口