如何使用DbParameter将多个参数传递给c#中的参数化查询? [英] How to pass multiple parameters to the parametrized query in c# using DbParameter?

查看:55
本文介绍了如何使用DbParameter将多个参数传递给c#中的参数化查询?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想开发一种通用的应用程序,它可以与所有类型的数据库(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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆