存储过程中的日期时间参数
DateTime Parameters in stored procedure
我有一个存储过程插入到 SQL 中的 table 服务器:
CREATE PROCEDURE ThemHocSinh
@TenHS NVARCHAR(255),
@NgaySinh DATETIME,
@TenChaMe NVARCHAR(255),
@SDTChaMe VARCHAR(16),
@DiaChi NVARCHAR(255),
@LopHC VARCHAR(6)
AS
INSERT INTO dbo.HocSinh (MaHS, TenHS, NgaySinh, NgayNhapHoc, TenChaMe, SDTChaMe, DiaChi, LopHC)
VALUES (DEFAULT, @TenHS, @NgaySinh, DEFAULT, @TenChaMe, @SDTChaMe, @DiaChi, @LopHC)
我用 Dapper 在 C# 中编写了一个函数,并使用 DateTime
类型传递动态参数。
public void ThemHocSinh(string TenHS, DateTime NgaySinh, string TenChaMe, string SDT, string DiaChi, string LopHC)
{
using (MamNonBK context = new MamNonBK())
{
using (IDbConnection db = new SqlConnection(context.Database.Connection.ConnectionString))
{
var p = new DynamicParameters();
p.Add("@TenHS", TenHS);
p.Add("@NgaySinh", NgaySinh);
p.Add("@TenChaMe", TenChaMe);
p.Add("@SDTChaMe", SDT);
p.Add("@DiaChi", DiaChi);
p.Add("@LopHC", LopHC);
db.Execute("ThemHocSinh", p, commandType: CommandType.StoredProcedure);
}
}
}
但似乎我的程序崩溃了,因为 dateTime 参数不匹配。我的系统日期和时间格式为 "dd/MM/yyyy"。这是我调用函数并传递 DateTime 参数时的错误。
System.Data.SqlClient.SqlException: The conversion of a varchar data type to a datetime data type resulted in an out-of-range value. The statement has been terminated.
由于 SQL 收到的字符串格式不正确,您还可以使用:
p.Add("@NgaySinh", NgaySinh.ToString("yyyy-MM-dd"));
而不是:
p.Add("@NgaySinh", NgaySinh);
我相信它会成功!
我有一个存储过程插入到 SQL 中的 table 服务器:
CREATE PROCEDURE ThemHocSinh
@TenHS NVARCHAR(255),
@NgaySinh DATETIME,
@TenChaMe NVARCHAR(255),
@SDTChaMe VARCHAR(16),
@DiaChi NVARCHAR(255),
@LopHC VARCHAR(6)
AS
INSERT INTO dbo.HocSinh (MaHS, TenHS, NgaySinh, NgayNhapHoc, TenChaMe, SDTChaMe, DiaChi, LopHC)
VALUES (DEFAULT, @TenHS, @NgaySinh, DEFAULT, @TenChaMe, @SDTChaMe, @DiaChi, @LopHC)
我用 Dapper 在 C# 中编写了一个函数,并使用 DateTime
类型传递动态参数。
public void ThemHocSinh(string TenHS, DateTime NgaySinh, string TenChaMe, string SDT, string DiaChi, string LopHC)
{
using (MamNonBK context = new MamNonBK())
{
using (IDbConnection db = new SqlConnection(context.Database.Connection.ConnectionString))
{
var p = new DynamicParameters();
p.Add("@TenHS", TenHS);
p.Add("@NgaySinh", NgaySinh);
p.Add("@TenChaMe", TenChaMe);
p.Add("@SDTChaMe", SDT);
p.Add("@DiaChi", DiaChi);
p.Add("@LopHC", LopHC);
db.Execute("ThemHocSinh", p, commandType: CommandType.StoredProcedure);
}
}
}
但似乎我的程序崩溃了,因为 dateTime 参数不匹配。我的系统日期和时间格式为 "dd/MM/yyyy"。这是我调用函数并传递 DateTime 参数时的错误。
System.Data.SqlClient.SqlException: The conversion of a varchar data type to a datetime data type resulted in an out-of-range value. The statement has been terminated.
由于 SQL 收到的字符串格式不正确,您还可以使用:
p.Add("@NgaySinh", NgaySinh.ToString("yyyy-MM-dd"));
而不是:
p.Add("@NgaySinh", NgaySinh);
我相信它会成功!