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

2025-05-15 15:10:51
推荐回答(5个)
回答1:

三个步骤:

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

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

回答2:

SQL语句 都是 insert into table1(user ,pwd,sex,age)values (@user ,@pwd,@sex,@age), 在C# 用 for 循环去逐行插入,con 在for 循环之前open,循环结束后关闭con。

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

给分吧,标准的操作。

回答3:

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

  

  

回答4:

将你查询的语句一条一条的插入到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();
}

回答5:

可以使用xml当参数之后 在用存储过程接收,例如
DECLARE @idoc int
DECLARE @doc nvarchar(max)
SET @doc ='

  
    1
    a
  

  
    2
    b
  

'
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
SELECT
*
FROM OPENXML (@idoc, '/roots/root',2)
WITH (id nvarchar(10),name nvarchar(100))
insert into ....