如何使用DbParameter将多个参数传递给c#中的参数化查询? [英] How to pass multiple parameters to the parametrized query in c# using DbParameter?
问题描述
我想开发一种通用的应用程序,它可以与所有类型的数据库(Oracle,MySQL,SQLite)一起使用.因此,我从一个共同的地方为每种表格提供了不同的数据源.
I want to develop generalized application which can works with all type of databases (Oracle, MySQL, SQLite). So I have provide different data source to the each form from one common place.
我还想使用可以接受多个参数的参数化查询.我无法使用DbParameter传递多个参数,但可以通过单个参数查询正常运行,但不多.
And I also want to use parametrized query who can accept multiple parameters. I am unable to to pass multiple parameters using DbParameter, it works fine with single parameter query but not with many.
所以请帮助我...
dbconnect dc = new dbconnect();//class which contain data source name
DbConnection con;
DbCommand cmd;
DbDataReader dr;
DbProviderFactory df;
DataAdapter da;
df = DbProviderFactories.GetFactory(dbconnect.dbprovider);
con = df.CreateConnection();
con.ConnectionString = dbconnect.sqlstr;
con.Open();
cmd = df.CreateCommand();
cmd.CommandText = "update customer set" + " name='@name'," + "address='@address'," + "phone='@phone' " + "where code='@code';";
cmd.Connection = con;
DbDataAdapter daa = df.CreateDataAdapter();
daa.UpdateCommand = cmd;
DbParameter param = df.CreateParameter();
param.ParameterName = "@name";
param.Value = txtname.Text;
param.ParameterName = "@address";
param.Value = txtadd.Text;
param.ParameterName = "@phone";
param.Value = txtphone.Text;
param.ParameterName = "@code";
param.Value = txtcode.Text;
daa.UpdateCommand.Parameters.Add(param);
daa.UpdateCommand.ExecuteNonQuery();
**But this not working.**
推荐答案
您仅创建一个参数
DbParameter param = df.CreateParameter();
param.ParameterName = "@name";
param.Value = txtname.Text;
等...
您需要为每个对象创建一个新的 DbParameter
You need to create a new DbParameter
for each one
DbParameter param = df.CreateParameter();
param.ParameterName = "@name";
param.Value = txtname.Text;
daa.UpdateCommand.Parameters.Add(param);
param = df.CreateParameter();
param.ParameterName = "@address";
param.Value = txtadd.Text;
daa.UpdateCommand.Parameters.Add(param);
等...
并将每个添加到命令中.
and add each one to the command.
这篇关于如何使用DbParameter将多个参数传递给c#中的参数化查询?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!