在Windows窗体中显示插入数据的异常

时间:2013-10-04 11:03:39

标签: c# winforms

我有一个指定控件的表单 enter image description here

这是我点击插入按钮

时的代码
private void btnInsertRArtist_Click(object sender, EventArgs e)
    {
        SqlCommand comand = new SqlCommand("InsertRecordingArtists", conect);
        comand.CommandType = CommandType.StoredProcedure;
        try
        {
            if (txtboxRArtistName.Text == string.Empty || txtboxPlaceOB.Text == "")
            {
                errorProvider1.SetError(txtboxRArtistName, "Enter the Music category");
            }
            else
            {
                conect.Open();
                comand.Parameters.AddWithValue("@RecordingArtistName", txtboxRArtistName.Text);
                comand.Parameters.AddWithValue("@DateOfBirth", dateTimePicker1);
                comand.Parameters.AddWithValue("@BirthPlace", txtboxPlaceOB.Text);
                SqlDataAdapter adapt = new SqlDataAdapter(comand);
                comand.ExecuteNonQuery();
                txtboxRArtistName.Text = "";
            }
        }
        finally
        {
            conect.Close();
        }
    }

但是当我插入数据时会出现此异常

enter image description here

我能在这做什么......我的商店程序也在这里

ALTER PROCEDURE InsertRecordingArtists
 @RecordingArtistName text,
 @DateOfBirth datetime,
 @BirthPlace text

AS 开始     INSERT INTO [MusicCollection]。[dbo]。[RecordingArtists]            ([RecordingArtistName],[DATEOFBIRTH],[出生地])      VALUES            (@ RecordingArtistName,@ DATEOFBIRTH,@出生地)

5 个答案:

答案 0 :(得分:2)

您不能将DateTimePicker实例用作查询参数。请改用DateTimePicker.Value

comand.Parameters.AddWithValue("@DateOfBirth", dateTimePicker1.Value);

答案 1 :(得分:1)

更改您的

comand.Parameters.AddWithValue("@DateOfBirth", dateTimePicker1);

comand.Parameters.AddWithValue("@DateOfBirth", dateTimePicker1.Text);

您所做的是无法添加DateTimePicker实例作为参数。 AddWithValue方法将string作为第二个参数。使用ValueText属性。

答案 2 :(得分:0)

dateTimePicker1是一个控件,而不是DateTime值。 您需要从以下位置获取DateTime值:

comand.Parameters.AddWithValue("@DateOfBirth", dateTimePicker1.Value.ToString());

答案 3 :(得分:0)

您需要dateTimePicker1的值,您应该更改:

command.Parameters.AddWithValue("@DateOfBirth", dateTimePicker1);

command.Parameters.AddWithValue("@DateOfBirth", dateTimePicker1.Value);

答案 4 :(得分:0)

丹尼斯说的是正确的。此外,如果它不起作用,您可能希望显示错误消息。

例如:

private void btnInsertRArtist_Click(object sender, EventArgs e)
    {
        SqlCommand comand = new SqlCommand("InsertRecordingArtists", conect);
        comand.CommandType = CommandType.StoredProcedure;
        try
        {
            if (txtboxRArtistName.Text == string.Empty || txtboxPlaceOB.Text == "")
            {
                errorProvider1.SetError(txtboxRArtistName, "Enter the Music category");
            }
            else
            {
                conect.Open();
                comand.Parameters.AddWithValue("@RecordingArtistName", txtboxRArtistName.Text);
                comand.Parameters.AddWithValue("@DateOfBirth", dateTimePicker1.Value);
                comand.Parameters.AddWithValue("@BirthPlace", txtboxPlaceOB.Text);
                SqlDataAdapter adapt = new SqlDataAdapter(comand);
                comand.ExecuteNonQuery();
                txtboxRArtistName.Text = "";
            }
        }
        catch(Exception ex)
        {  
              MessageBox.Show(ex.Message);
        }
        finally
        {
            conect.Close();
        }
    }