0

アプリケーションの他の場所で行ったSQL接続を介して関数を使用しようとしています(アプリケーションの残りの部分ではなく、ここでのみエラーが発生します)。そのエラーコードが何を意味するのかを検索したところ、SQLサーバーに接続できない場合のエラーであることがわかったという応答がありましたか? しかし、それは解決策を与えません。

ここに私のC#コードがあります

 SqlConnection connection = Database.GetConnection();

                DataTable dt = new DataTable("CRC");
                SqlCommand cmd = new SqlCommand("SELECT dbo.CalcRentalCharge(@RentalStartDateTime,@RentalEndDateTime,@CarTypeID)", connection);
            try
        {
            connection.Open();
            using (SqlDataReader dr = cmd.ExecuteReader())
            {
                cmd.CommandType = CommandType.Text;
                cmd.Parameters.Add("@RentalStartDateTimetext", SqlDbType.DateTime).Value = RentalStartDateTimeBox.Text;
                cmd.Parameters.Add("@RentalEndDateTimetext", SqlDbType.DateTime).Value = RentalEndDateTimeBox.Text;
                cmd.Parameters.Add("@CarTypeIDtext", SqlDbType.Int).Value = CarTypeID.Text;

                connection.Open();
                Decimal rentalChange = (Decimal)cmd.ExecuteScalar();
                connection.Close();
                MessageBox.Show("The rental change is: " + rentalChange.ToString());

                if (dr.HasRows)
                {
                    dt.Load(dr);
                    dataGridView1.DataSource = dt;
                }
            }
            connection.Close();

この FUNCTION を機能させるのを手伝ってくれませんか?

4

2 に答える 2

2

cmd.ExecuteReader()コマンド オブジェクトにパラメーターを追加する前に使用しないでください。エラーが発生し、コマンドにパラメーターを追加してから cmd.execureReader()

于 2013-08-28T12:51:23.373 に答える
1

変数名にコピー/貼り付けエラーがあります:

ラインで

cmd.Parameters.Add("@RentalStartDateTimetext", SqlDbType.DateTime).Value = RentalStartDateTimeBox.Text;

文字列

RentalStartDateTimeテキスト

する必要があります

レンタル開始日時

それに加えて、次のエラーとしてポップアップするため、接続の開始と終了が間違っています。接続にも using ブロックを使用し、ブロックの開始直後にそれを開きます。手動で閉じる必要はありません。using ブロックがそれを行います。

于 2013-08-28T12:47:08.043 に答える