比如5个数字
update 表 set unum="1,2,3,4,5"
取出来以后用split()函数分割 就好了
构造一个大的SQL语句呗,Insert into wer(A1,A2...A1000) Values(@a1,@a2,...@a1000)。里面有1000个参数,给参数数组循环赋值,然后执行就可以了。这个字符串,你可以用循环来生成
string Sql,param
Sql=""param=""
for(int i=1i<=1000i++)
{
Sql+="A"+i.ToString()+","
param+="@a"+i.ToString()+","
}
Sql="Insert into wer("+Sql.Substring(0,Sql.Length-1)+") Values ("+param.Substring(0,param.Length-1))
给这个Sql的参数数组赋值,然后执行这个SQL;
不过我记得2000下面,单个SQL命令最大长度为4K字节(记得不是太清楚了,你可以自己试试看),如果有1000个字段,光写字段名就超过4K字节了。
如果SQL语句太常,就需要拆分成两条,一条插入,并返回一个id,然后根据第二条update,或者你的参数中自己就带了一个id也可以。
1.设置一个数据库的连接串,string
connectStr
=
"User
Id=scottPassword=tigerData
Source="
OracleConnection
conn
=
new
OracleConnection(connectStr)
OracleCommand
command
=
new
OracleCommand()
command.Connection
=
conn
conn.Open()
2.通过循环写入大量的数据
for
(int
i
=
0
i
<
recc
i++)
{
string
sql
=
"insert
into
dept
values("
+
i.ToString()
+
","
+
i.ToString()
+
","
+
i.ToString()
+
")"
command.CommandText
=
sql
command.ExecuteNonQuery()
}
//设置一个数据库的连接串
string
connectStr
=
"User
Id=scottPassword=tigerData
Source="
OracleConnection
conn
=
new
OracleConnection(connectStr)
OracleCommand
command
=
new
OracleCommand()
command.Connection
=
conn
//到此为止,还都是我们熟悉的代码,下面就要开始喽
//这个参数需要指定每次批插入的记录数
command.ArrayBindCount
=
recc
//在这个命令行中,用到了参数,参数我们很熟悉,但是这个参数在传值的时候
//用到的是数组,而不是单个的值,这就是它独特的地方
command.CommandText
=
"insert
into
dept
values(:deptno,
:deptname,
:loc)"
conn.Open()
//下面定义几个数组,分别表示三个字段,数组的长度由参数直接给出
int[]
deptNo
=
new
int[recc]
string[]
dname
=
new
string[recc]
string[]
loc
=
new
string[recc]
//
为了传递参数,不可避免的要使用参数,下面会连续定义三个
//
从名称可以直接看出每个参数的含义,不在每个解释了
OracleParameter
deptNoParam
=
new
OracleParameter("deptno",
OracleDbType.Int32)
deptNoParam.Direction
=
ParameterDirection.Input
deptNoParam.Value
=
deptNo
command.Parameters.Add(deptNoParam)
OracleParameter
deptNameParam
=
new
OracleParameter("deptname",
OracleDbType.Varchar2)
deptNameParam.Direction
=
ParameterDirection.Input
deptNameParam.Value
=
dname
command.Parameters.Add(deptNameParam)
OracleParameter
deptLocParam
=
new
OracleParameter("loc",
OracleDbType.Varchar2)
deptLocParam.Direction
=
ParameterDirection.Input
deptLocParam.Value
=
loc
command.Parameters.Add(deptLocParam)
//在下面的循环中,先把数组定义好,而不是像上面那样直接生成SQL
for
(int
i
=
0
i
<
recc
i++)
{
deptNo[i]
=
i
dname[i]
=
i.ToString()
loc[i]
=
i.ToString()
}
//这个调用将把参数数组传进SQL,同时写入数据库
command.ExecuteNonQuery()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)