ADO.NET工厂模式下数据删除错误

liuyeede 2009-04-12 11:25:26
代码如下:

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();时出现如下错误信息:
至少有一个参数未指定
...全文
193 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
bingovox 2009-04-14
  • 打赏
  • 举报
回复
int ret =-1;
为什么起名字为ret...我还以为是要返回出此函数的值。。。
liuyeede 2009-04-14
  • 打赏
  • 举报
回复
字段名没有错,有兴趣的朋友可以试一下ADO.NET下工厂模式的写法。
mqfwjp 2009-04-14
  • 打赏
  • 举报
回复
panrongzeng 2009-04-14
  • 打赏
  • 举报
回复
SQL里面的字段名写错了没?
liuyeede 2009-04-14
  • 打赏
  • 举报
回复
多谢楼上的朋友,可我用的是DbXXXX的工厂模式....
qlzf11140820 2009-04-14
  • 打赏
  • 举报
回复
up
jieon 2009-04-14
  • 打赏
  • 举报
回复
ConnectionString 写错了吧 少了个DSn=xx
greenery 2009-04-14
  • 打赏
  • 举报
回复
Access和sql server参数语法有点不同
用?代替参数名。
moodboy1982 2009-04-13
  • 打赏
  • 举报
回复
问题出在SQL语句上。你打印一下语句看下。
peterb 2009-04-13
  • 打赏
  • 举报
回复
Delete From TaxManagers Where MangerNumbuer=?
access数据库中参数占位符是"?",参数名称好像可以随意
liuyeede 2009-04-13
  • 打赏
  • 举报
回复
SQL语句没有问题
gui0605 2009-04-13
  • 打赏
  • 举报
回复

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();


试过,没有问题
liuyeede 2009-04-12
  • 打赏
  • 举报
回复
至少一个参数没有被指定值。
yagebu1983 2009-04-12
  • 打赏
  • 举报
回复
看看你的SQL是否正确。。
最好单步调试。。。
liuyeede 2009-04-12
  • 打赏
  • 举报
回复
资料太少,没有完整的范例
gui0605 2009-04-12
  • 打赏
  • 举报
回复
Access数据库中Delete From TaxManagers Where MangerNumbuer=@TaxManagerNum这样用是不对的,参数只能用问号

Delete From TaxManagers Where MangerNumbuer=?

你自己google一下access里面参数的用法
辰爸 2009-04-12
  • 打赏
  • 举报
回复
提示那个错误是因为dbParameter.Value = this.managerNumTxt.Text,可能没有给@TaxManagerNum成功赋值吧,个人估计!!
liuyeede 2009-04-12
  • 打赏
  • 举报
回复
顶贴

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧