繁体   English   中英

将DatetimePicker的Date值发送到SQL Server的正确格式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM