代码如下: private void DeleteBtn_Click(object sender, EventArgs e)
{
//int result = DALClass.DeleteManager(this.managerNameTxt.Text);
//if (result > -1)
//{
// parent.TaxstatusBar.Panels[0].Text = "删除成功";
//}
//else
//{
// parent.TaxstatusBar.Panels[0].Text = "删除失败";
//} int ret =-1;
string dbProviderName = ConfigurationSettings.AppSettings["DbProviderName"];
//private static string dbp = "Provider=System.Data.OleDb";
string dbConnectionString = ConfigurationManager.AppSettings["TaxInvoiceConn"]; DbProviderFactory dbfactory = DbProviderFactories.GetFactory(dbProviderName);
DbConnection dbconn = dbfactory.CreateConnection();
dbconn.ConnectionString = dbConnectionString; DbCommand dbCommand = dbconn.CreateCommand();
dbCommand.CommandText = "Delete From TaxManagers Where MangerNumbuer=@TaxManagerNum";
dbCommand.CommandType = CommandType.Text; DbParameter dbParameter = dbCommand.CreateParameter();
dbParameter.DbType = DbType.String;
dbParameter.ParameterName = "@TaxManagerNum";
dbParameter.Value = this.managerNumTxt.Text;
dbParameter.Direction = ParameterDirection.Input;
dbCommand.Parameters.Add(dbParameter); dbCommand.Connection.Open();
ret = dbCommand.ExecuteNonQuery();
dbCommand.Connection.Close(); if (ret > -1)
{
MessageBox.Show("删除成功");
}
}App.conifg文件内容如下:我用的是Access数据库,驱动是<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="TaxConnectionString"
connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Tax.accdb;Persist Security Info=True"
providerName="System.Data.OleDb" />
<add name="TaxInvoiceConn" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\TaxInvionce\TaxInvionce\Tax.mdb"
providerName="System.Data.OleDb" />
</connectionStrings>
<appSettings>
<add key="UseDepartment" value=""/>
<add key="DepartmentNum" value=""/>
<add key="DbProviderName" value="System.Data.OleDb"/>
<add key="TaxInvoiceConn" value="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Tax.accdb;Persist Security Info=True"/>
</appSettings>
</configuration>执行到ret = dbCommand.ExecuteNonQuery();时出现如下错误信息:
至少有一个参数未指定
{
//int result = DALClass.DeleteManager(this.managerNameTxt.Text);
//if (result > -1)
//{
// parent.TaxstatusBar.Panels[0].Text = "删除成功";
//}
//else
//{
// parent.TaxstatusBar.Panels[0].Text = "删除失败";
//} int ret =-1;
string dbProviderName = ConfigurationSettings.AppSettings["DbProviderName"];
//private static string dbp = "Provider=System.Data.OleDb";
string dbConnectionString = ConfigurationManager.AppSettings["TaxInvoiceConn"]; DbProviderFactory dbfactory = DbProviderFactories.GetFactory(dbProviderName);
DbConnection dbconn = dbfactory.CreateConnection();
dbconn.ConnectionString = dbConnectionString; DbCommand dbCommand = dbconn.CreateCommand();
dbCommand.CommandText = "Delete From TaxManagers Where MangerNumbuer=@TaxManagerNum";
dbCommand.CommandType = CommandType.Text; DbParameter dbParameter = dbCommand.CreateParameter();
dbParameter.DbType = DbType.String;
dbParameter.ParameterName = "@TaxManagerNum";
dbParameter.Value = this.managerNumTxt.Text;
dbParameter.Direction = ParameterDirection.Input;
dbCommand.Parameters.Add(dbParameter); dbCommand.Connection.Open();
ret = dbCommand.ExecuteNonQuery();
dbCommand.Connection.Close(); if (ret > -1)
{
MessageBox.Show("删除成功");
}
}App.conifg文件内容如下:我用的是Access数据库,驱动是<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="TaxConnectionString"
connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Tax.accdb;Persist Security Info=True"
providerName="System.Data.OleDb" />
<add name="TaxInvoiceConn" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\TaxInvionce\TaxInvionce\Tax.mdb"
providerName="System.Data.OleDb" />
</connectionStrings>
<appSettings>
<add key="UseDepartment" value=""/>
<add key="DepartmentNum" value=""/>
<add key="DbProviderName" value="System.Data.OleDb"/>
<add key="TaxInvoiceConn" value="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Tax.accdb;Persist Security Info=True"/>
</appSettings>
</configuration>执行到ret = dbCommand.ExecuteNonQuery();时出现如下错误信息:
至少有一个参数未指定
最好单步调试
access数据库中参数占位符是"?",参数名称好像可以随意
string sql="Delete From NewsLink where ID=?"
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\DataBase\Temp.mdb");
OleDbCommand cmd = new OleDbCommand(sql,conn);
OleDbParameter parm = new OleDbParameter("id",OleDbType.Int);
parm.Direction = ParameterDirection.Input;
cmd.Parameters.Add(parm);
cmd.Parameters["id"].Value = 5;
conn.Open();
cmd.ExecuteReader();
conn.Close();
试过,没有问题
为什么起名字为ret...我还以为是要返回出此函数的值
用?代替参数名。