oracle中insert和write文件性能比较

oracle中insert和write文件性能比较,第1张

在Oracle中,插入 *** 作性能比写文件 *** 作埋唯的性能纤皮要高得多。弯竖培插入 *** 作只需要几毫秒就可以完成,而写文件 *** 作则需要几十毫秒甚至更长的时间才能完成,这是由于插入 *** 作只需要将数据插入到内存中,而写文件 *** 作则需要将数据写入到磁盘中。此外,Oracle还提供了更高效的批量插入 *** 作,可以进一步提高插入 *** 作的性能。

采用winform实现需要的功能,首先在数据库中建表,其中一个字段为Blob类型,怎么创建就不说了。思路很燃轿简单,就是文件流读取电脑上的文件,然后通过insert语句将文件的字节流数组存进表中,代码如下:

//通过Stream读取文件,并转换为byte数组

Stream

stream

=

File.Open(ChoosedFilePaths[i],

FileMode.Open,

FileAccess.Read,

FileShare.Read)

byte[]

buffer

=

new

byte[stream.Length]

stream.Read(buffer,

0,

buffer.Length)

string

constr

=

ConfigurationManager.ConnectionStrings["constr"].ConnectionString

OracleConnection

conn

=

new

OracleConnection(constr)

OracleParameter

param

=

null

OracleCommand

cmd

=

new

OracleCommand()

cmd.Connection

=

conn

cmd.CommandText

=

"insert

into

FJG_FILE_MANAGE(NUMBERS,FILE_NAME,FILECONTENT)

VALUES('"

+

attributes.Number

+

"','"

+

attributes.FileName

+

"',:contents,'")"

param

=

new

OracleParameter("contents",

OracleType.Blob,

buffer.Length)

param.Value

=

buffer

cmd.Parameters.Add(param)

try

{

conn.Open()

cmd.ExecuteNonQuery()

}

catch(System.Exception

e)

{

log.Append("上传状态:t失败!rn"

+

"失败原因:t"

+

e1.Message

+

"rnrn")

}

finally

{

cmd.Close()

}

本来采用的是OleDb,后来测配段滑试发现不好使,好像是Provider的问题,然后改为OracleClient来进行上传,OracleClient不需要Provider。

培腊关键是sql语句中Blob字段的参数要写成“:ParameterName”的形式。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8228841.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存