VC#2017 RC和VC#2008连接字符串错误

时间:2017-02-20 18:25:36

标签: c# ms-access

我一直试图制作一个简单的表格来进行微小的计算并在之后连接到数据库。

我正在使用我的PC(64位OS Win 10 Pro)。我有VC#2008和VC#2017 RC。

我的第一个问题是我无法在我的(64位操作系统)PC上构建或调试我的VC#2008版本.sln文件。我附上了一个截图。它说:

  

jet.4.0未在本地计算机上注册。

我的第二个问题是我似乎无法将VC#2017 RC表单中的任何数据添加到数据库中。它说connectstate.Open();未处理的错误。

以下是代码段

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Tenant_Bill_Generator
{
 public partial class Form1 : Form
 {
  public Form1()
  {
    InitializeComponent();
  }
  OleDbConnection connect = new OleDbConnection();
  private void Form1_Load(object sender, EventArgs e)
  {
   // TODO: This line of code loads data into the 'billdata._Billdata' table. You can move, or remove it, as needed.
   this.billdataTableAdapter.Fill(this.billdata._Billdata);
   billdataBindingSource.DataSource = this.billdata._Billdata;
  }
  private void btnSave_Click(object sender, EventArgs e)
  {
   connect.ConnectionString=@"Provider=Microsoft.JET.OLEDB.4.0;
   Data Source=C:\Users\GCL\Documents\Visual Studio 2017\Projects\Tenant Bill Generator\Tenant Bill Generator.accdb";
   double con_unit = 0, bill = 0, presr = 0, prevr = 0, fmem = 0; 
   double noso = 0, noda = 0, re_la = 0, mcon_unit = 0, totalbill = 0, perunitcost = 0;
   presr = double.Parse(txtPresentMeterReading.Text);
   prevr = double.Parse(txtPreviousMeterReading.Text);

   con_unit = double.Parse(txtMainConsumedUnit.Text);
   mcon_unit = ((presr) - (prevr));
   lblConsumedUnit.Text = Convert.ToString(mcon_unit);

   if (con_unit < 75)
   {
    bill = con_unit * 3.8;
   }
   else if (con_unit < 200)
   {
    bill = (75 * 3.8) + ((con_unit - 75) * 5.14);
   }
   else if (con_unit < 300)
   {
    bill = (75 * 3.8) + (125 * 5.14) + ((con_unit - 200) * 5.36);
   }
   else if (con_unit < 400)
   {
    bill = (75 * 3.8) + (125 * 5.14) + (100 * 5.36) + ((con_unit - 300) * 5.63);
   }
   else if (con_unit < 600)
   {
    bill = (75 * 3.8) + (125 * 5.14) + (100 * 5.36) + (100 * 5.63) + ((con_unit - 400) * 8.70);
   }
   else if (con_unit < 600)
   {
    bill = (75 * 3.8) + (125 * 5.14) + (100 * 5.36) + (100 * 5.63) + (200 * 8.70) + (con_unit * 9.98);
   }
   else bill = (75 * 3.8) + (125 * 5.14) + (100 * 5.36) + (100 * 5.63) + (200 * 8.70) + ((con_unit - 600) * 9.98);
   lblTotalBill.Text = Convert.ToString(totalbill);
   string rn = txtRoomno.Text;                     
   string mob = txtMonthofBilling.Text;
   string pmr = txtPresentMeterReading.Text;            
   string rwt = txtMainConsumedUnit.Text;
   string prevmr = txtPreviousMeterReading.Text;
   connect.Open();
   OleDbCommand cmd = new OleDbCommand("INSERT into userdata(Roomno,MonthofBilling,PresentReading,PreviousReading,ConsumedUnit,TotalBill,MainConsumedUnit)" 
                    + "Values(@rn,@mob,@pmr,@rwt,@prevmr,lblConsumedunit.Text,lblTotalBill.Text)", connect);
   if (connect.State == ConnectionState.Open)
   {
    cmd.Parameters.Add("@rn", OleDbType.Char, 20).Value = rn;                
    cmd.Parameters.Add("@mob", OleDbType.Char, 100).Value = mob;
    cmd.Parameters.Add("@pmr", OleDbType.Char, 100).Value = pmr;
    cmd.Parameters.Add("@rwt", OleDbType.Char, 100).Value = rwt;
    cmd.Parameters.Add("@prevmr", OleDbType.Char, 100).Value = prevmr;
    cmd.Parameters.Add("lblConsumedUnit.Text", OleDbType.Char, 100).Value = lblConsumedUnit.Text;
    cmd.Parameters.Add("lblTotalBill.Text", OleDbType.Char, 100).Value = lblTotalBill.Text;                
    try
    {
     cmd.ExecuteNonQuery();
     MessageBox.Show("Data Added To Database");
     txtRoomno.Text = "";
     txtMonthofBilling.Text = "";
     txtPresentMeterReading.Text = "";
     txtPreviousMeterReading.Text = "";
     lblConsumedUnit.Text = "";
     txtMainConsumedUnit.Text = "";
     lblTotalBill.Text = "";                    
     connect.Close();
    }
    catch (Exception expe)
    {
     MessageBox.Show(expe.Source);
     connect.Close();
    }
   }
   else
   {
    MessageBox.Show("Connection Failed");
   }
  }
 }
}

注意:我无法找到连接打开的位置。我已经使用过try / catch块。

1 个答案:

答案 0 :(得分:0)

我回来了解决方案。谢谢你的帮助。

实际上我的问题是我能够使用vc#2008构建我的.sln文件。一旦我发现这一点,我只是改变了'build on cpu'x86选项,而walla就像一个魅力。

然后我亲自研究了很多,然后我发现我使用的.sln文件最初是在我的另一台PC上的32位操作系统上创建的。我只是复制了文件。

再次感谢您的方向性评论。