C# 将DateTimePicker值传递给存储过程
我的表格上有两个C# 将DateTimePicker值传递给存储过程,c#,winforms,datetimepicker,C#,Winforms,Datetimepicker,我的表格上有两个DateTimePicker,分别是dtp\u VacationStart和dtp\u VacationEnd。我想把它的值传递给一个存储过程 我的SQL代码 CREATE PROC [ADD_VACATION] @vacationStart date ,@vacationEnd date ,@vacationMem nvarchar (100) = NULL ,@idVacationKind_L int ,@idMember_L int AS INSERT INTO [tb
DateTimePicker
,分别是dtp\u VacationStart
和dtp\u VacationEnd
。我想把它的值传递给一个存储过程
我的SQL代码
CREATE PROC [ADD_VACATION] @vacationStart date ,@vacationEnd date ,@vacationMem nvarchar (100) = NULL ,@idVacationKind_L int ,@idMember_L int
AS INSERT INTO [tblVacation]
([vacationStart]
,[vacationEnd]
,[vacationMem]
,[idVacationKind_L]
,[idMember_L])
VALUES
(@vacationStart
,@vacationEnd
,@vacationMem
,@idVacationKind_L
,@idMember_L)
C#代码:
这件事呢
private void btnAddVacation_Click(object sender, EventArgs e)
{
cms.ADD_VACATION( dtp_VacationStart.Text, dtp_VacationEnd.Text, txtVacationMemory.Text,
Convert.ToInt32(cmbVacationKind.SelectedValue)
,Convert.ToInt32(dgMember_Grade.CurrentRow.Cells[0].Value.ToString()));
MessageBox.Show("Added Successfuly", " ", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
这段代码给了我一个错误:输入字符串的格式不正确
谢谢大家。。。很抱歉搞混了。。这是我的第一个问题,您的
SqlParameter
@vacationStart
类型为DateTime
,但您为其分配了一个字符串
您应该获得DateTimePicker
的DateTime
值(而不是DateTimePicker.Text
中的字符串表示形式):
并更改添加假期的签名
:
public void ADD_VACATION(DateTime vacationStart, ...
现在您可以使用它:
private void btnAddVacation_Click(object sender, EventArgs e)
{
DateTime vacationStart = dtp_VacationStart.Value;
cms.ADD_VACATION(vacationStart, ...
我认为您输入的数据格式错误…
以正确的格式输入数据或更改数据类型您必须将dtp_VacationStart.Text和dtp_VacationEnd.Text转换为日期
cms.ADD_VACATION( Convert.ToDateTime(dtp_VacationStart.Text), Convert.ToDateTime(dtp_VacationEnd.Text), txtVacationMemory.Text,
Convert.ToInt32(cmbVacationKind.SelectedValue)
,Convert.ToInt32(dgMember_Grade.CurrentRow.Cells[0].Value.ToString()));
您还可以使用DateTime.Parse函数。可以查看更多信息。函数的参数
ADD_VACATION()
vacationStart
&vacationEnd
的类型为字符串
,而您将它们作为SqlDbType.Date
传递到参数中。将参数的类型更改为DateTime
,并在调用函数ADD_VACATION()
中,对DateTimePicker
控件使用.Value
。这应该可以解决您的问题。这涉及两个转换DateTime->Text->DateTime以及所有可能的格式错误。不是OP想要的…错误参数1:无法从“System.DateTime”转换为“String”如何获取日期?从文本框还是日期时间选择器?如果是dateTimePicker,则必须使用.Value
代替.Text
。如果它是文本框,那么你必须使用。dateTimePicker的日期。。。我试图使用value,但它给了我一个错误Argument2:无法从'System.DateTime'转换为'String',我同意你的看法,但错误是说同样的事情。。。所以这不是一个答案,我应该把DateTime vacationStart=dtp_vacationStart.Value?另一个错误输入字符串的格式不正确。请使用调试器。错误发生在哪里?相应字符串的内容是什么?
private void btnAddVacation_Click(object sender, EventArgs e)
{
DateTime vacationStart = dtp_VacationStart.Value;
cms.ADD_VACATION(vacationStart, ...
cms.ADD_VACATION( Convert.ToDateTime(dtp_VacationStart.Text), Convert.ToDateTime(dtp_VacationEnd.Text), txtVacationMemory.Text,
Convert.ToInt32(cmbVacationKind.SelectedValue)
,Convert.ToInt32(dgMember_Grade.CurrentRow.Cells[0].Value.ToString()));