c#字符串中拼接参数该处理的问题

在C#中执行如下字符串形式的数据库插入命令"insertinto表1(字段1,字段2,字段3)values(值1,值2,值3);"现在想把字段与字段值用参数来代替,即:字... 在C#中执行如下字符串形式的数据库插入命令
"insert into 表1 (字段1, 字段2, 字段3) values (值1,值2,值3);"
现在想把字段与字段值用参数来代替,即:
字段1——参数1
字段2——参数2
字段3——参数3
……
也就是说这个字段1,2,3是不定的,我想换成参数来代替,有没有办法呢!
谢谢了
展开
 我来答
悪魔氷菓Dl883
推荐于2017-11-25
知道答主
回答量:48
采纳率:0%
帮助的人:16.1万
展开全部
给你个示例吧,拼接语句而已,用存储过程有点大材小用了!
示例:string sql=string.Format("insert into 表名('字段名1','字段名2','字段名3')values('{0}','{1}','{2}')",字段名1的值,字段名2个值,字段名3的值);
有啥看不懂的问吧!,字段名1的值,字段名2个值,字段名3的值根据你的需求直接传就行了!
哲事姓无
2013-05-03 · TA获得超过1176个赞
知道小有建树答主
回答量:903
采纳率:100%
帮助的人:431万
展开全部

没有对表名或是列名中带空格的情况进行处理,也没有测试过。但是大致流程如此

[STAThread]
    static public void Main(string[] args)
    {
        var sqlConnection = new SqlConnection();
        string tableName = "表名";
        // 指定插入的数据列名及值
        var values = new List<KeyValuePair<string, object>>();
        values.Add(new KeyValuePair<string, object>("column1", 1));
        values.Add(new KeyValuePair<string, object>("column2", "value2"));
        values.Add(new KeyValuePair<string, object>("column3", DateTime.Now));
        var command = CreateInsetCommand(sqlConnection, tableName, values.ToArray());
        command.ExecuteNonQuery();
    }
    /// <summary>
    /// 设置一个sqlcommand 插入命令
    /// </summary>
    /// <param name="sqlConnection">数据库连接对象.</param>
    /// <param name="tableName">数据表名.</param>
    /// <param name="parameters">需要插入的列名及参数值.</param>
    /// <exception cref="System.ApplicationException">请指定插入值</exception>
    private static SqlCommand CreateInsetCommand(SqlConnection sqlConnection, string tableName, params KeyValuePair<string, object>[] parameters)
    {
        if (parameters.Length == 0)
            throw new ApplicationException("请指定插入值");
        // 格式化参数及参数值
        var columnNames = Array.ConvertAll(parameters, value => value.Key);
        var columnFlags = Array.ConvertAll(parameters, value => string.Format("@{0}", value.Key));
        var commandText = string.Format("insert into {0} ( {1} ) parameters ( {2} );",
                                               tableName, string.Join(", ", columnNames), string.Join(", ", columnFlags));
        // 创建sqlcommand并赋值参数
        var sqlCommand = sqlConnection.CreateCommand();
        sqlCommand.CommandText = commandText;
        Array.ForEach(parameters, value => sqlCommand.Parameters.AddWithValue(
            string.Format("@{0}", value.Key), value));
        return sqlCommand;
    }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shelher
2013-05-03 · TA获得超过6134个赞
知道大有可为答主
回答量:3609
采纳率:100%
帮助的人:6178万
展开全部
请参考下列代码
string sql = "insert into TblSeats values(@loginId,@realName,@loginPwd)";
//参数的添加
var parameters = new SqlParameter[]
{
new SqlParameter("loginId", userName),
new SqlParameter("realName", realName),
new SqlParameter("loginPwd", userPwd)
};
SqlHelper.ExecuteNonQuery(sql,CommandType.Text,parameters);
//下面是SqlHelper.ExecuteNonQuery这个方法的具体代码
//使用params SqlParameter[] 可以实现可变个数参数的添加
public static int ExecuteNonQuery(string sql, CommandType type,params SqlParameter[] parameters)
{
using (var connection = new SqlConnection(ConStr))
{
using (var command = new SqlCommand(sql,connection))
{
command.CommandType = type;
if (parameters!=null)
{
command.Parameters.AddRange(parameters);
}
connection.Open();
return command.ExecuteNonQuery();
}
}
}
如有疑问请追问
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
seo0763_com
2013-05-02 · TA获得超过128个赞
知道小有建树答主
回答量:176
采纳率:0%
帮助的人:159万
展开全部
可以滴,使用list数据类型来存储字段名及参数,然后再将其拼起来,我也是这样处理的。
声明一个List<string[]> Item;类型的变量,对其赋值为item.Add(new string[2] { "字段1","参数1"});
List类型可以动态添加,不限长度,所以你加几个参数都行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
落叶有期
2013-05-03 · TA获得超过574个赞
知道小有建树答主
回答量:726
采纳率:0%
帮助的人:343万
展开全部
请看清问题再答题。

既然字段值可以用参数传递,难道字段就不能用参数传递么?
"insert into 表1 (@param1,@param2, @param3) values (@param4,@param4,@param5);"

单步调试一下看看最终command.ExecuteNonQuery()执行的sql语句,当然你可以试一下传递不同值时能否达到预期。

有了想法就自己动手试一下吧,虽然我也没有试过。
程序是编写和调试出来的,不是问出来的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式