ADO.Net c#0x80131904必须声明标量变量/函数

ADO.Net c#0x80131904必须声明标量变量/函数,c#,sql,ado.net,C#,Sql,Ado.net,我试图通过SQL连接使用函数,我在我的应用程序的其他地方都做过这种连接(只在这里给出错误,而不是应用程序的其余部分)。当我搜索该错误代码的含义时,我找到的回答说,当无法连接到SQL server时,这是一个错误?但它并没有给出解决方案 这是我的c代码 您能帮我使这个函数工作吗?您的变量名中有一个复制/粘贴错误: 排队 Add(“@RentalStartDateTimetext”,SqlDbType.DateTime).Value=RentalStartDateTimeBox.Text 弦 Ren

我试图通过SQL连接使用函数,我在我的应用程序的其他地方都做过这种连接(只在这里给出错误,而不是应用程序的其余部分)。当我搜索该错误代码的含义时,我找到的回答说,当无法连接到SQL server时,这是一个错误?但它并没有给出解决方案

这是我的c代码


您能帮我使这个函数工作吗?

您的变量名中有一个复制/粘贴错误:

排队

Add(“@RentalStartDateTimetext”,SqlDbType.DateTime).Value=RentalStartDateTimeBox.Text

RentalStartDateTimetext

需要

RentalStartDateTime


除此之外,因为它将作为您的下一个错误弹出:您的连接的打开和关闭是错误的。对连接也使用using块,并在块开始后直接打开它。您不需要手动关闭它,using块将为您完成此操作。

您的变量名中存在复制/粘贴错误:

排队

Add(“@RentalStartDateTimetext”,SqlDbType.DateTime).Value=RentalStartDateTimeBox.Text

RentalStartDateTimetext

需要

RentalStartDateTime


除此之外,因为它将作为您的下一个错误弹出:您的连接的打开和关闭是错误的。对连接也使用using块,并在块开始后直接打开它。您不需要手动关闭它,using块将为您完成此操作。

在向命令对象添加参数之前,不要使用
cmd.ExecuteReader()
。 它给出了错误,
将参数添加到命令中,然后将cmd.execureReader()添加到命令对象中。在将参数添加到命令对象之前,不要使用
cmd.execureReader()
。 它给出了错误,
将参数添加到命令,然后添加cmd.execureReader()

您也犯了同样的错误。在添加参数之前,您必须
ExecuteReader
。@MartinSmith即使在添加参数之后执行读取器也会给出相同的异常。另外还有一个问题,就是NVOIG指出的名称是错误的,我已经解决了这个问题。还是一样的错误。你犯了同样的错误。在添加参数之前,您必须
ExecuteReader
。@MartinSmith即使在添加参数之后执行读取器也会给出相同的异常。另外还有一个问题,就是NVOIG指出的名称是错误的,我已经解决了这个问题。仍然是相同的错误。即使在添加参数后执行读取器也会产生相同的异常。即使在添加参数后执行读取器也会产生相同的异常。你的意思是这样吗?使用(连接){connection.Open();DataTable dt=newdatatable(“CRC”);cmd.CommandType=CommandType.Text;cmd.Parameters.Add(“@RentalStartDateTime”,SqlDbType.DateTime)。Value=RentalStartDateTimeBox.Text;cmd.Parameters.Add(“@RentalEndDateTime”Value=RentalEndDateTimeBox.Text;cmd.Parameters.Add(“@CarTypeID”,SqlDbType.Int)。Value=CarTypeID.Text;Decimal-rentalChange=(Decimal)cmd.ExecuteScalar();你的意思是这样的吗?使用(连接){connection.Open();DataTable dt=new DataTable(“CRC”);cmd.CommandType=CommandType.Text;cmd.Parameters.Add(“@RentalStartDateTime”,SqlDbType.DateTime)。Value=RentalStartDateTimeBox.Text;cmd.Parameters.Add(“@RentalEndDateTime”,SqlDbType.DateTime)。Value=RentalEndDateTimeBox.Text;cmd.Parameters.Add(”@CarTypeID“,SqlDbType.Int).Value=CarTypeID.Text;Decimal-rentalChange=(Decimal)cmd.ExecuteScalar();
 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();