C# 中参数化拼接SQL语句插入数据库
在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();
四个字段就是4个参数,@user ,@pwd,@sex,@age
给分吧,标准的操作。
添加引用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();
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();
}
数据库表单就是数据库中的表名吗?
嗯
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 ....