-1
VC#2017年RC INSERT参数错误VC#2017年的RC和VC#2008的连接字符串错误
VC#2008年建立自己的错误
我一直在努力使一个简单的形式来做一个小的计算,然后连接到数据库。
我正在使用我的电脑(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");
}
}
}
}
''它说“connectstate.Open();”未处理的错误。“' - 不,它不... – David
感谢您的快速回复。这是我收到的错误消息(System.Data.OleDb.OleDbException:'找不到文件'C:\ Users \ GCL \ Documents \ Visual Studio 2017 \ Projects \ Tenant Bill Generator \ Tenant Bill Generator.accdb'。' ) –
“未处理的错误”本身不是一个错误消息。它告诉你,*有*错误,但你没有处理它。所以当时唯一的建议是处理错误。通常这可以通过try/catch块来完成。通过处理错误,您可以确定* actual *错误,然后采取措施进行纠正。 – David