3

コントロールが割り当てられているフォームがあります ここに画像の説明を入力

これは、挿入ボタンをクリックしたときのコードです

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();
        }
    }

しかし、データを挿入すると、この例外が発生します

ここに画像の説明を入力

ここで何ができますか...ストアプロシージャもここにあります

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

AS BEGIN INSERT INTO [MusicCollection].[dbo].[RecordingArtists] ([RecordingArtistName],[DateOfBirth],[BirthPlace]) VALUES (@RecordingArtistName,@DateOfBirth,@BirthPlace)

4

5 に答える 5

2

DateTimePickerインスタンスをクエリ パラメーターとして使用することはできません。DateTimePicker.Value代わりに使用してください:

comand.Parameters.AddWithValue("@DateOfBirth", dateTimePicker1.Value);
于 2013-10-04T11:05:25.723 に答える
1

あなたの

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

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

あなたがしていることは、DateTimePickerインスタンスをパラメータとして追加できないということです。AddWithValueメソッドは、文字列を 2 番目のパラメーターとして受け取ります。ValueまたはTextプロパティを使用します。

于 2013-10-04T11:07:23.100 に答える
0

dateTimePicker1 は DateTime 値ではなくコントロールです。U から DateTime 値を取得する必要があります。

comand.Parameters.AddWithValue("@DateOfBirth", dateTimePicker1.Value.ToString());
于 2013-10-04T11:08:34.730 に答える
0

の値が必要ですdateTimePicker1。変更する必要があります。

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

command.Parameters.AddWithValue("@DateOfBirth", dateTimePicker1.Value);
于 2013-10-04T11:08:38.917 に答える
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();
        }
    }
于 2013-10-04T11:08:42.153 に答える