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

如题!比如有表 table1,四个字段user ,pwd,sex,age
在C# 中如何使用参数化一次插入多条数据呢!比如用select union all 语句或者其它的方法!

三个步骤:

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

       Sqlconnection connection=new Sqlconnection(ConnectionString);

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

      两种途径:

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

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

    SqlCommand command = new SqlCommand(sqlstr, connection);

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

       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();

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-07
SQL语句 都是 insert into table1(user ,pwd,sex,age)values (@user ,@pwd,@sex,@age), 在C# 用 for 循环去逐行插入,con 在for 循环之前open,循环结束后关闭con。

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

给分吧,标准的操作。
第2个回答  2015-09-24

      添加引用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();

  

  

第3个回答  推荐于2018-02-26
将你查询的语句一条一条的插入到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();
}追问

数据库表单就是数据库中的表名吗?

追答

本回答被网友采纳
第4个回答  2014-11-07
可以使用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 ....
相似回答