我现在用的是动态生成SQL语句 DataSet ds = new DataSet();
ds.ReadXml("a.xml");//生成动态inset语句
StringBuilder builder1 = new StringBuilder("insert into");
builder1.Append(" ").Append(tableName).Append("(");
ListViewItem l = new ListViewItem();
for (int i = 0; i < listView1.Items.Count; i++)
{
builder1.Append(listView1.Items[i].SubItems[0].Text).Append(",").Append(" ");
}
builder1.Replace(builder1.ToString(), builder1.ToString().Substring(0, builder1.ToString().Length - 2).ToString());
builder1.Append(") values (");
foreach (DataRow dr in ds.Tables[0].Rows)
{
StringBuilder builder2 = new StringBuilder();
for (int i = 0; i < listView1.Items.Count; i++)
{
string s = listView1.Items[i].SubItems[1].Text;
builder2.Append("'").Append(dr[s]).Append("',").Append(" ");
}
builder2.Replace(builder2.ToString(), builder2.ToString().Substring(0, builder2.ToString().Length - 2).ToString());
string insertSQL = builder1.ToString() + builder2.ToString() + ")";
OracleCommand cmd = new OracleCommand(insertSQL, OracleCon);
cmd.ExecuteNonQuery();
}
ds.Dispose();
由于数据很多,我想提高插入效率,请问怎么改可以批量进行插入啊,如500条插入一次?
或者有更好的方法
ds.ReadXml("a.xml");//生成动态inset语句
StringBuilder builder1 = new StringBuilder("insert into");
builder1.Append(" ").Append(tableName).Append("(");
ListViewItem l = new ListViewItem();
for (int i = 0; i < listView1.Items.Count; i++)
{
builder1.Append(listView1.Items[i].SubItems[0].Text).Append(",").Append(" ");
}
builder1.Replace(builder1.ToString(), builder1.ToString().Substring(0, builder1.ToString().Length - 2).ToString());
builder1.Append(") values (");
foreach (DataRow dr in ds.Tables[0].Rows)
{
StringBuilder builder2 = new StringBuilder();
for (int i = 0; i < listView1.Items.Count; i++)
{
string s = listView1.Items[i].SubItems[1].Text;
builder2.Append("'").Append(dr[s]).Append("',").Append(" ");
}
builder2.Replace(builder2.ToString(), builder2.ToString().Substring(0, builder2.ToString().Length - 2).ToString());
string insertSQL = builder1.ToString() + builder2.ToString() + ")";
OracleCommand cmd = new OracleCommand(insertSQL, OracleCon);
cmd.ExecuteNonQuery();
}
ds.Dispose();
由于数据很多,我想提高插入效率,请问怎么改可以批量进行插入啊,如500条插入一次?
或者有更好的方法
解决方案 »
- 求推荐:本人想做一个播放器,需要一个用ListView做的音乐列表
- c#调用c生成的dll文件的问题
- VS2005IDE,WinForm程序,怎样把字节数组以十进制显示,之后打印到窗体上?
- hash表设计,问题,有点难,一个算法……
- 如何得到树结点,该方法如何写?
- 小问题 js 怎么调用后台cs中的函数! 给出马上结帖
- C#用mysqldump备份mysql还原mysql数据库,急!!在线等!!!
- 跪求自定义控件问题!!!
- VS.NET C#
- byte[] 与 XML Serializer 正反序列化问题~ 求教
- 我的gridview 行,或者单元格,不能选中。是没有这个功能吗?
- 请教... 指定某个方法运行的线程
最后用da.Update()更新到表里~~
{
SqlCommand cmd = new SqlCommand("insert into Users([name],[sex],[class],[major],[telephone]) values(@name,@sex,@class,@major,@telephone)",cn);
cmd.Parameters.Add("@name",SqlDbType.NChar,32,"name");
cmd.Parameters.Add("@sex", SqlDbType.NChar, 2, "sex");
cmd.Parameters.Add("@class", SqlDbType.NChar, 32, "class");
cmd.Parameters.Add("@major", SqlDbType.NChar, 16, "major");
cmd.Parameters.Add("@telephone", SqlDbType.NChar, 32, "telephone");
da = new SqlDataAdapter();
da.InsertCommand = cmd;
cn.Open();
da.Update(ds,Common.Class1.table_Users);
cn.Close();
}
protected void insertsubmit_Click(object sender, EventArgs e)
{
DataAccess.Class1 dac = new DataAccess.Class1();
DataSet ds = dac.getUsers(Common.Class1.sql_getUser, Common.Class1.table_Users);
DataRow dr=ds.Tables[0].NewRow();
dr["name"] = this.TextBox1.Text;
dr["sex"] = this.DropDownList1.Text;
dr["class"] = this.TextBox3.Text;
dr["major"] = this.TextBox4.Text;
dr["telephone"] = this.TextBox5.Text;
ds.Tables[0].Rows.Add(dr);
dac.updataUsersByStoredProcedure(ds);
BindData();
}
或构建多个插入语句List<string>,再批插入数据库
可是我要插入的是Oracle数据库,这个方法还能用吗?
DataSet ds = dac.getUsers(Common.Class1.sql_getUser, Common.Class1.table_Users);
而我这个ds是ds.ReadXml("a.xml")读取的