[英]Correct Format of sending DatetimePicker's Date value to SQL Server
SQL Server在“崩溃”表中具有以下列
(<NationalId, char(10),>
,<CrashTime, date,>
,<CrashLocation, nvarchar(50),>
,<City, nvarchar(50),>
,<CarColor, nvarchar(50),>
,<CarEngine, nvarchar(50),>
,<CarType, nvarchar(50),>
,<Damage, int,>)
有一个名为“ addCrash”的存储过程,其中包含以下代码:
ALTER Procedure [dbo].[addCrash]
@NationalId char(10),
@CrashTime date,
@CrashLocation nvarchar(50),
@City nvarchar(50),
@CarColor nvarchar(50),
@CarEngine nvarchar(50),
@CarType nvarchar(50),
@Damage int
AS
BEGIN
INSERT INTO [dbo].[Crash]
([NationalId]
,[CrashTime],
[CrashLocation]
,[City]
,[CarColor]
,[CarEngine]
,[CarType]
,[Damage])
VALUES
( @NationalId,
@CrashTime ,
@CrashLocation ,
@City ,
@CarColor ,
@CarEngine ,
@CarType ,
@Damage)
END
现在在Visual Studio中,我使用自定义格式yyyy-MM-dd的DateTimePicker将日期发送到“ CrashTime”列,问题是每当我尝试将DateTimePicker中的日期添加到我的数据库时,出现不发送“ CrashTime”的错误“(日期)正确。
private void button1_Click(object sender, EventArgs e)
{
SqlParams[] parameters = new SqlParams[]
{
new SqlParams("@NationalId", SqlDbType.Char, nationalId),
new SqlParams("@CrashTime", SqlDbType.Date, dateTimePicker1.Value.Date.ToString("yyyy-MM-dd")),
new SqlParams("@CrashLocation", SqlDbType.NVarChar, TxtCrashLocation.Text),
new SqlParams("@City", SqlDbType.NVarChar, cityCombo.SelectedValue.ToString()),
new SqlParams("@CarColor", SqlDbType.NVarChar, ColorCombo.SelectedValue.ToString()),
new SqlParams("@CarEngine", SqlDbType.NVarChar, EngineCombo.SelectedValue.ToString()),
new SqlParams("@CarType", SqlDbType.NVarChar, cartypeCombo.SelectedValue.ToString()),
new SqlParams("@Damage", SqlDbType.Int, TxtDamage.Text)
};
ModifyConnection mc = new ModifyConnection();
mc.AddRecord("exec addCrash @NationalId,@CrashTime,@CrashLocation,@City,@CarColor,@CarEngine,@CarType,@Damage", parameters);
MessageBox.Show("Crash added Successfuly");
}
我不知道问题的根源,即使我将DateTimePicker的值转换为格式正确的字符串,也是:2017-01-05
您必须为参数指定正确的数据类型。 日期和日期时间有效,日期和字符串无效。
更正这一点:
new SqlParams("@CrashTime", SqlDbType.Date, dateTimePicker1.Value.Date.ToString("yyyy-MM-dd")),
尝试这个:
new SqlParams("@CrashTime", SqlDbType.Date, dateTimePicker1.Value.Date),
SQL Server中使用的数据类型“日期”从您的Visual Studio项目接受“日期时间”变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.