使用SqlTransaction将日期从日历选取器存储到SQL Server中-Visual studio 2015/C

本文关键字:Server SQL -Visual studio 2015 存储 日期 SqlTransaction 日历 选取 使用 | 更新日期: 2023-09-27 18:27:44

由于某些原因,我似乎无法将日期选择器中的值传递到SQL事务中并将其存储在数据库中。当我使用"硬编码"数据进行测试时,它运行良好。但现在,当我尝试从日历选择器中传递日期时,它会爆炸并抛出语法错误。

点击按钮执行的代码:

string connString = ConfigurationManager.ConnectionStrings["sampConnectionString"].ConnectionString;
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand("procinsert", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@name", TextBox1.Text);
cmd.Parameters.AddWithValue("@email", TextBox2.Text);
cmd.Parameters.AddWithValue("@datesaved", Calendar1.SelectedDate);

处理插入的SQL Server存储过程:

CREATE PROCEDURE [dbo].[procinsert]
    @name varchar(100), 
    @email varchar(320), 
    @datesaved date     
AS
begin
begin transaction 
  begin try
      insert into dataentry (name, email, dateadded) 
      values(@name, @email, @datesaved) 
  end try
  begin catch
    select ERROR_MESSAGE(),ERROR_SEVERITY()
    if @@trancount >0 
      rollback transaction 
  end catch 
  if @@Trancount >0
    commit transaction
  end

就我的一生而言,我不知道为什么我会出现语法错误:

在此处输入图像描述

如有任何帮助,我们将不胜感激!

谢谢。

使用SqlTransaction将日期从日历选取器存储到SQL Server中-Visual studio 2015/C

你得到了什么错误?没有这些信息很难判断,但首先可能出错的是Calendar1.SelectedDate为您提供了完整的DateTime对象(带时间的日期),而在SQL过程中,您需要纯date类型。

要么尝试只通过日期部分:

cmd.Parameters.AddWithValue("@datesaved", Calendar1.SelectedDate.ToString("g"));

或者更改程序中的参数类型:

@datesaved datetime2