2017-02-20 81 views
-1

VC#2017年RC INSERT参数错误VC#2017年的RC和VC#2008的连接字符串错误

VC# 2017 RC INSERT parameter error

VC#2008年建立自己的错误

VC# 2008 Build Error

我一直在努力使一个简单的形式来做一个小的计算,然后连接到数据库。

我正在使用我的电脑(64位操作系统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 label2_Click(object sender, EventArgs e) 
    { 

    } 

    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) 
    { 
     [email protected]"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, 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); 

     //perunitcost = (((bill + 70) * .05) + (bill + 70))/(mcon_unit)*(con_unit)); 
     totalbill = Math.Ceiling((((((bill + 70) * .05) + (bill + 70))/(con_unit)) * (mcon_unit))); 
     lblTotalBill.Text = Convert.ToString(totalbill); 

     string rn = txtRoomno.Text; 
     //string tn = textBox1.Text; 
     //string tnid = textbox8.Text; 
     //string tmn = textbox2.Text; 
     //string bg = textbox13.Text; 
     //string dob = textbox14.Text; 
     //string n = textbox15.Text; 
     //string fm = textbox16.Text; 
     /*string nod = textbox22.Text; 
     string nos = textbox10.Text; 
     string peradd = textbox3.Text + " " + textbox6.Text + " " + textbox7.Text + " " + textBox11.Text; 
     string peraddmn = textbox17.Text; 
     string preadd = textbox23.Text + " " + textbox21.Text + " " + textbox20.Text + " " + textbox19.Text; 
     string preaddmn = textbox18.Text; 
     string moe = textbox12.Text;*/ 
     string mob = txtMonthofBilling.Text; 
     string pmr = txtPresentMeterReading.Text; 
     /*string sn = textbox29.Text; 
     string snid = textbox27.Text; 
     string smn = textbox28.Text; 
     string rom = textbox34.Text; 
     string lgn = textbox26.Text; 
     string lgnid = textbox24.Text; 
     string lgmn = textbox25.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("@tn", OleDbType.Char, 20).Value = tn; 
      cmd.Parameters.Add("@tnid", OleDbType.Char, 20).Value = tnid; 
      cmd.Parameters.Add("@tmn", OleDbType.Char, 20).Value = tmn; 
      cmd.Parameters.Add("@bg", OleDbType.Char, 20).Value = bg; 
      cmd.Parameters.Add("@dob", OleDbType.Char, 20).Value = dob; 
      cmd.Parameters.Add("@n", OleDbType.Char, 20).Value = n; 
      cmd.Parameters.Add("@fm", OleDbType.Char, 20).Value = fm; 
      cmd.Parameters.Add("@nod", OleDbType.Char, 20).Value = nod; 
      cmd.Parameters.Add("@nos", OleDbType.Char, 20).Value = nos; 
      cmd.Parameters.Add("@peradd", OleDbType.Char, 100).Value = peradd; 
      cmd.Parameters.Add("@peraddmn", OleDbType.Char, 100).Value = peraddmn; 
      cmd.Parameters.Add("@preadd", OleDbType.Char, 100).Value = preadd; 
      cmd.Parameters.Add("@preaddmn", OleDbType.Char, 100).Value = preaddmn; 
      cmd.Parameters.Add("@moe", OleDbType.Char, 100).Value = moe;*/ 
      cmd.Parameters.Add("@mob", OleDbType.Char, 100).Value = mob; 
      cmd.Parameters.Add("@pmr", OleDbType.Char, 100).Value = pmr; 
      /*cmd.Parameters.Add("@sn", OleDbType.Char, 100).Value = sn; 
      cmd.Parameters.Add("@snid", OleDbType.Char, 100).Value = snid; 
      cmd.Parameters.Add("@smn", OleDbType.Char, 100).Value = smn; 
      cmd.Parameters.Add("@rom", OleDbType.Char, 100).Value = rom; 
      cmd.Parameters.Add("@lgn", OleDbType.Char, 100).Value = lgn; 
      cmd.Parameters.Add("@lgnid", OleDbType.Char, 100).Value = lgnid; 
      cmd.Parameters.Add("@lgmn", OleDbType.Char, 100).Value = lgmn;*/ 
      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; 

      //cmd.Parameters.Add("label45.Text", OleDbType.Char, 100).Value = label45.Text; 
      //cmd.Parameters.Add("@rela", OleDbType.Char, 100).Value = rela; 
      //cmd.Parameters.Add("textbox38.Text", OleDbType.Char, 100).Value = textbox38.Text; 
      try 
      { 
       cmd.ExecuteNonQuery(); 
       MessageBox.Show("Data Added To Database"); 
       txtRoomno.Text = ""; 
       txtMonthofBilling.Text = ""; 
       txtPresentMeterReading.Text = ""; 
       txtPreviousMeterReading.Text = ""; 
       lblConsumedUnit.Text = ""; 
       txtMainConsumedUnit.Text = ""; 
       lblTotalBill.Text = ""; 
       /*textbox16.Text = ""; 
       textbox22.Text = ""; 
       textbox10.Text = ""; 
       textbox3.Text = ""; 
       textbox6.Text = ""; 
       textbox7.Text = ""; 
       textBox11.Text = ""; 
       textbox17.Text = ""; 
       textbox23.Text = ""; 
       textbox21.Text = ""; 
       textbox20.Text = ""; 
       textbox19.Text = ""; 
       textbox12.Text = ""; 
       textbox4.Text = ""; 
       textbox5.Text = ""; 
       textbox29.Text = ""; 
       textbox27.Text = ""; 
       textbox28.Text = ""; 
       textbox34.Text = ""; 
       textbox26.Text = ""; 
       textbox24.Text = ""; 
       textbox25.Text = ""; 
       textbox36.Text = ""; 
       textbox37.Text = ""; 
       textbox18.Text = ""; 
       textbox38.Text = "";*/ 

       connect.Close(); 

      } 
      catch (Exception expe) 
      { 
       MessageBox.Show(expe.Source); 
       connect.Close(); 
      } 
     } 
     else 
     { 
      MessageBox.Show("Connection Failed"); 
     } 
    } 
} 
} 
+0

''它说“connectstate.Open();”未处理的错误。“' - 不,它不... – David

+0

感谢您的快速回复。这是我收到的错误消息(System.Data.OleDb.OleDbException:'找不到文件'C:\ Users \ GCL \ Documents \ Visual Studio 2017 \ Projects \ Tenant Bill Generator \ Tenant Bill Generator.accdb'。' ) –

+0

“未处理的错误”本身不是一个错误消息。它告诉你,*有*错误,但你没有处理它。所以当时唯一的建议是处理错误。通常这可以通过try/catch块来完成。通过处理错误,您可以确定* actual *错误,然后采取措施进行纠正。 – David

回答

0

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

其实我的问题是我能够使用vc#2008构建我的.sln文件。只要我发现,我只是改变了'建立在CPU'x86选项和walla工作就像一个魅力。

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

再次感谢您的定向评论。