这是一个用于旅游计算的windows窗体应用程序。当我从按钮计算值时,即使所有连接都正确关闭,也会出现以下错误。
连接没有关闭。连接的当前状态是打开的。我已经检查了天气是否有任何剩余的连接,但我找不到一个。
你能帮我拿一下这个吗?
public void ltcalculate(string vehicleno, string packagetype, DateTime startdate, DateTime enddate, int startkmreading, int endkmreading)
{
try
{
TimeSpan noofD1 = enddate - startdate;
double noofD2 = noofD1.TotalDays;
int noofD3 = Convert.ToInt32(noofD2);
totalkms = endkmreading - startkmreading;
conn.Open();
string serchquery = "select * from Vehicle where Vehicle_NO = '" + vehicleno + "'";
SqlCommand comm = new SqlCommand(serchquery, conn);
SqlDataReader dataReader = comm.ExecuteReader();
if (dataReader.Read())
{
double driverrate = Convert.ToDouble(dataReader["Driver_Rate"]);
}
else
{
MessageBox.Show("Vehicle not a found");
}
conn.Close();
dataReader.Close();
conn.Open();
string searchquearypackage = "select * from Long_Tour_Package where Package_Type = '" + packagetype + "'";
SqlCommand com = new SqlCommand(searchquearypackage, conn);
SqlDataReader packdatareder = com.ExecuteReader();
if (packdatareder.Read())
{
double packagerate = Convert.ToDouble(packdatareder["Package_Rate"]);
double driverovernightrate = Convert.ToDouble(packdatareder["Driver_Overmight_Rate"]);
double vehiclenightparkrate = Convert.ToDouble(packdatareder["Vehicle_Night_Park_Rate"]);
int maximumkmlimit = Convert.ToInt32(packdatareder["Max_Km"]);
int rateperextrakm = Convert.ToInt32(packdatareder["Extra_Km_Rate"]);
int maxnokmsperpack = Convert.ToInt32(maximumkmlimit * noofD3); //This is the limit per the whole trip, not a a day
if (totalkms > maxnokmsperpack)
{
extrakmfortrip = totalkms - maxnokmsperpack;
extrakmfee = Convert.ToDouble(extrakmfortrip * rateperextrakm);
}
else
{
extrakmfee = 0;
}
int noofnt = noofD3 - 1;
double toOntfee = (driverovernightrate + vehiclenightparkrate) * noofnt;
double totpackrate = packagerate * noofD3;
double totcharge = totpackrate + toOntfee + extrakmfee;
txtbasehirerate.Text = totpackrate.ToString();
txtextrakmrate.Text = extrakmfee.ToString();
txtovernightstayfee.Text = driverovernightrate.ToString();
txttotalamount.Text = totcharge.ToString();
MessageBox.Show(noofnt + "\n" + toOntfee + "\n" + extrakmfee + "\n");
}
conn.Close();
packdatareder.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void btncalculate_Click(object sender, EventArgs e)
{
string vehicleno = txtvehicleno.Text;
string packagetype = txtpackagetype.Text;
int startkmreading = Convert.ToInt32(txtstartkmreading.Text);
int endkmreading = Convert.ToInt32(txtendkmreading.Text);
DateTime startdate = dtpstartdate.Value;
DateTime enddate = dtpenddate.Value;
ltcalculate(vehicleno, packagetype, startdate, enddate,startkmreading,endkmreading);
}
1条答案
按热度按时间h7wcgrx31#
首先,将Close()语句移到finally块中,如下所示: