将存储过程参数从字符串转换为日期 [英] Convert a Stored Procedure Parameter from String to Date

查看:217
本文介绍了将存储过程参数从字符串转换为日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

private void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                SubmitChangesViaStoredProcedure();

            }

                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            

        }

        private void SubmitChangesViaStoredProcedure()
        {
            da.UpdateCommand = CreateUpdateViaSPCommand();

            da.Update(dataTable);
            MessageBox.Show("Record Saved", "COB PartC Non-Horizon", MessageBoxButtons.OK);
            /*AutoClosingMessageBox.Show("Member data saved", "MSP", 2000);*/
        }

       
            
            private SqlCommand CreateUpdateViaSPCommand()
            {
                SqlCommand cmd2 = new SqlCommand("PartC_NonHorizonUpdate_Grid", sqlConnection1);
                cmd2.CommandType = CommandType.StoredProcedure;
                SqlParameterCollection pc = cmd2.Parameters;

                cmd2.Parameters.AddWithValue("@relHICN","relHICN");
                cmd2.Parameters.AddWithValue("@relRelation", "relRelation");
                cmd2.Parameters.AddWithValue("@relInsurerName", "relInsurerName");
                cmd2.Parameters.AddWithValue("@relMSPCode", "relMSPCode");

                //DateTime dtEff = DateTime.ParseExact("relMSPEffDate", "yyyy-MM-dd HH:mm tt", System.Globalization.CultureInfo.InvariantCulture);
                DateTime dtEff = Convert.ToDateTime("relMSPEffDate");
                cmd2.Parameters.AddWithValue("@relMSPEffDate", SqlDbType.Date);
                cmd2.Parameters["@relMSPEffDate"].Value = dtEff.ToShortDateString();

                //cmd2.Parameters.AddWithValue("@relMSPEffDate", "relMSPEffDate");

                DateTime dtTerm = Convert.ToDateTime("relMSPTermDate");
                cmd2.Parameters.Add("@relMSPTermDate", SqlDbType.Date);
                cmd2.Parameters["@relMSPTermDate"].Value = dtTerm.ToShortDateString();

                //cmd2.Parameters.AddWithValue("@relMSPTermDate", "relMSPTermDate");

                cmd2.Parameters.AddWithValue("@relComment", "relComment");

                DateTime dtActEff = Convert.ToDateTime("relActMSPEffDate");
                cmd2.Parameters.AddWithValue("@relActMSPEffDate", SqlDbType.Date);
                cmd2.Parameters["@relActMSPEffDate"].Value = dtActEff.ToShortDateString();

                //cmd2.Parameters.AddWithValue("@relActMSPEffDate", "relActMSPEffDate");

                DateTime dtActTerm = Convert.ToDateTime("relActMSPTermDate");
                cmd2.Parameters.Add("@relActMSPTermDate", SqlDbType.Date);
                cmd2.Parameters["@relActMSPTermDate"].Value = dtActTerm.ToShortDateString();

                //cmd2.Parameters.AddWithValue("@relActMSPTermDate", "relActMSPTermDate");

                cmd2.Parameters.AddWithValue("@relActMSPStatus", "relActMSPStatus");
                cmd2.Parameters.AddWithValue("@relTransActionCd", "relTransActionCd");

               return cmd2;


Stored Procedure:

USE [MSP]
GO
/****** Object:  StoredProcedure [dbo].[PartC_NonHorizonUpdate_Grid]    Script Date: 2/6/2018 10:02:37 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[PartC_NonHorizonUpdate_Grid]
	@relHICN nvarchar(12),
	@relRelation nvarchar(2),
	@relInsurerName nvarchar(32),
	@relMSPCode nvarchar(1),
	@relMSPEffDate date,
	@relMSPTermDate date,
	@relComment nvarchar(max),
	@relActMSPEffDate date,
	@relActMSPTermDate date,
	@relActMSPStatus nvarchar(30),
	@relTransActionCd nvarchar(2)
AS
	UPDATE [PartC_NonHorizon_Master] 
	SET [relComment] = @relComment,
	[relActMSPEffDate] = @relActMSPEffDate, [relActMSPTermDate] = @relActMSPTermDate,
	[relActMSPStatus] = @relActMSPStatus, [relTransActionCd] = @relTransActionCd
	WHERE relHICN=@relHICN AND relRelation=@relRelation AND
		relInsurerName=@relInsurerName AND relMSPCode=@relMSPCode AND
		relMSPEffDate=@relMSPEffDate AND relMSPTermDate=@relMSPTermDate


            }

在C#.net中我在表单中显示DataGridView.DataGridView绑定到数据表.DataTable从SQL Server表加载,值显示在DataGridView中。
那里用户可以更新DataGridView中的4个日期字段。用户更新字段后,按下保存按钮执行存储过程,该过程将4个日期字段以及其他字段作为参数传递。日期字段
在SQL Server中有一个数据类型的日期,但是当加载到数据表中时它们被加载为字符串。我尝试在调用存储之前使用DateTime.ParseExact和Convert.ToDateTime将日期字段转换为日期格式过程,但收到
错误,该字符串未被识别为有效的DateTime。如何在调用存储过程之前将日期字段转换为日期数据类型。

推荐答案

嗨gaugust,

Hi gaugust,

你可以重播使用以下代码转换转换日期时间,然后再试一次。

You can replace the convert datetime using the following code, and try it again.

var dtEff = Convert.ToDateTime("relMSPEffDate").ToString("yyyy-MM-dd");
                    cmd2.Parameters.AddWithValue("@relMSPEffDate", dtEff);

最好的问候,

Cherry


这篇关于将存储过程参数从字符串转换为日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆