C# 中参数化拼接SQL语句插入数据库

如题!比如有表table1,四个字段user,pwd,sex,age在C#中如何使用参数化一次插入多条数据呢!比如用selectunionall语句或者其它的方法!... 如题!比如有表 table1,四个字段user ,pwd,sex,age
在C# 中如何使用参数化一次插入多条数据呢!比如用select union all 语句或者其它的方法!
展开
 我来答
captain2005
推荐于2016-11-14 · TA获得超过1058个赞
知道小有建树答主
回答量:2041
采纳率:40%
帮助的人:555万
展开全部

三个步骤:

  • 第一步:声明数据库连接对象:

       Sqlconnection connection=new Sqlconnection(ConnectionString);

  • 第二步:声明数据库操作对象:

      两种途径:

  1. 直接以字符串拼接的方式形成sql语句,比如:

    sqlstr="insert into usertab(uid,pwd) values('"+uidtxt+"','"+pwdtxt+"')";

    SqlCommand command = new SqlCommand(sqlstr, connection);

  2. 以参数占位的先行成形式语句,然后对参数实行绑定,比如:

       sqlstr="insert into usertab(uid,pwd) values(@uidtxt,@pwdtxt)";

      SqlCommand command = new SqlCommand(sqlstr, connection);

       command.Parameters.Add("@uidtxt", SqlDbType.Text);
       command.Parameters["@uidtxt"].Value =uidtxt;

      command.Parameters.Add("@pwdtxt", SqlDbType.Text);
      command.Parameters["@pwdtxt"].Value =uidtxt;

  • 执行数据库操作:

       command.ExecuteNonQuery();

       connection.close();

cyg17173
2014-11-07 · TA获得超过107个赞
知道小有建树答主
回答量:97
采纳率:0%
帮助的人:105万
展开全部
SQL语句 都是 insert into table1(user ,pwd,sex,age)values (@user ,@pwd,@sex,@age), 在C# 用 for 循环去逐行插入,con 在for 循环之前open,循环结束后关闭con。

四个字段就是4个参数,@user ,@pwd,@sex,@age

给分吧,标准的操作。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jian4364
2015-09-24 · TA获得超过282个赞
知道答主
回答量:160
采纳率:0%
帮助的人:49.6万
展开全部
  •   添加引用Oracle.DataAccess.dll

  •   using Oracle.DataAccess.Client;

OracleBulkCopy sqlBulk = new OracleBulkCopy("User ID=root;Password=***;Data Source=xx.x.x.x;",
  OracleBulkCopyOptions.UseInternalTransaction);
  sqlBulk.DestinationTableName = "表名";
  foreach(DataColumn column in dtTable.Columns) {
  sqlBulk.ColumnMappings.Add(column.ColumnName,column.ColumnName);
  }
  sqlBulk.WriteToServer(dtTable);
  sqlBulk.Dispose();
  sqlBulk.Close();

  

  

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zeroliu1234
推荐于2018-02-26 · TA获得超过779个赞
知道小有建树答主
回答量:200
采纳率:33%
帮助的人:160万
展开全部
将你查询的语句一条一条的插入到datatable里面,然后批量插入数据库表单中用下面的方法
public void InsertTable(DataTable table1,string tablename) // table1要插入的数据 tablename 数据库表单名称
{
SqlBulkCopy sqlBulkCopy = new SqlBulkCopy("数据库连接字符串", SqlBulkCopyOptions.UseInternalTransaction);
sqlBulkCopy.DestinationTableName = tablename;

if (table1 != null && table1.Rows.Count != 0)
{
sqlBulkCopy.WriteToServer(table1);
}
sqlBulkCopy.Close();
}
追问
数据库表单就是数据库中的表名吗?
追答
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
loser222
2014-11-07 · 超过10用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:16.9万
展开全部
可以使用xml当参数之后 在用存储过程接收,例如
DECLARE @idoc int
DECLARE @doc nvarchar(max)
SET @doc ='
<roots>
  <root>
    <id>1</id>
    <name>a</name>
  </root>
  <root>
    <id>2</id>
    <name>b</name>
  </root>
</roots>'
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
SELECT
*
FROM OPENXML (@idoc, '/roots/root',2)
WITH (id nvarchar(10),name nvarchar(100))
insert into ....
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式