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是不定的,我想换成参数来代替,有没有办法呢!
谢谢了 展开
"insert into 表1 (字段1, 字段2, 字段3) values (值1,值2,值3);"
现在想把字段与字段值用参数来代替,即:
字段1——参数1
字段2——参数2
字段3——参数3
……
也就是说这个字段1,2,3是不定的,我想换成参数来代替,有没有办法呢!
谢谢了 展开
7个回答
展开全部
没有对表名或是列名中带空格的情况进行处理,也没有测试过。但是大致流程如此
[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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
请参考下列代码
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();
}
}
}
如有疑问请追问
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();
}
}
}
如有疑问请追问
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以滴,使用list数据类型来存储字段名及参数,然后再将其拼起来,我也是这样处理的。
声明一个List<string[]> Item;类型的变量,对其赋值为item.Add(new string[2] { "字段1","参数1"});
List类型可以动态添加,不限长度,所以你加几个参数都行。
声明一个List<string[]> Item;类型的变量,对其赋值为item.Add(new string[2] { "字段1","参数1"});
List类型可以动态添加,不限长度,所以你加几个参数都行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
请看清问题再答题。
既然字段值可以用参数传递,难道字段就不能用参数传递么?
"insert into 表1 (@param1,@param2, @param3) values (@param4,@param4,@param5);"
单步调试一下看看最终command.ExecuteNonQuery()执行的sql语句,当然你可以试一下传递不同值时能否达到预期。
有了想法就自己动手试一下吧,虽然我也没有试过。
程序是编写和调试出来的,不是问出来的。
既然字段值可以用参数传递,难道字段就不能用参数传递么?
"insert into 表1 (@param1,@param2, @param3) values (@param4,@param4,@param5);"
单步调试一下看看最终command.ExecuteNonQuery()执行的sql语句,当然你可以试一下传递不同值时能否达到预期。
有了想法就自己动手试一下吧,虽然我也没有试过。
程序是编写和调试出来的,不是问出来的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询