尝试通过C#将日期和其他一些字符串数据插入到SQL中,如下所示:
OperationResponse ICommon.addUser(userRequest request)
{
int? result = 0;
Guid countryGUID;
string requestParent = request.parent;
string requestName = request.name;
string requestSchool = request.school;
int requestGender = request.gender;
DateTime dateTimeDOB = DateTime.ParseExact(request.DOB, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture);
string requestEmail = request.email;
string requestMobile = request.mobile;
Guid.TryParse(request.countryID, out countryGUID);
string requestInstitution = request.institution;
try
{
result = s2u.AddUser(request.parent, request.name, request.school, request.gender, dateTimeDOB, request.email, request.mobile, countryGUID, request.institution);
}
catch (Exception ex)
{
if (isDebug() == true)
{
return new OperationResponse(ex.Message);
}
else
{
return new OperationResponse("Error: Database inaccessible.");
}
}
if (result == 1)
{
return new OperationResponse();
}
else
{
return new OperationResponse("Error: User could not be added.");
}
}
然而,每当我尝试在Fiddler中运行它时,它到目前为止都没有成功,因为结果总是最终为-1。
我怀疑这可能与DOB未正确插入有关,但我无法确定。我试图解析的request.DOB是一个字符串,SQL表中的DOB列有date数据类型,我试图以" yyyy-的格式传递日期MM-dd",但在C#方面,我也要传递时间,默认情况下是12.00.00 AM。我不知道这是否会导致问题。我们非常感谢您的帮助,如果需要,我会提供更多详细信息。
编辑:AddUser存储过程如下:
ALTER PROCEDURE [dbo].[AddUser]
-- Add the parameters for the stored procedure here
@parent nvarchar(300),
@name nvarchar(300),
@school nvarchar(500),
@gender int,
@DOB datetime2(7),
@email nvarchar(500),
@mobile nvarchar(20),
@countryID uniqueidentifier,
@institution nvarchar(500)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
INSERT INTO [dbo].[Users] ([parent], [name], [school], [gender], [DOB], [email], [mobile], [countryID], [institution])
VALUES (@parent, @name, @school, @gender, @DOB, @email, @mobile, @countryID, @institution);
END
答案 0 :(得分:0)
检查字符串日期时间是否正确。我相信它的格式不正确。
此外,你为什么不使用以下方法?
DateTime dt = Convert.ToDateTime(dateTime);
使用EF,datetime主要作为datetime2类型处理,因此不会产生太大影响或造成任何麻烦。
此外,使用try& amp;编写存储过程中的事务句柄。抓住并试图找出是否有任何问题。