把System.byte[]类型数据写入Oracle的blob类型字段中

基本形式为:sql="insert into 你要插入的表名 (field1,field2,..fieldi..fieldn)values(‘value1’,‘value2’,...,:fieldi,....‘valuen’)";
其中“:fieldi”为你要插入blob对应的字段名。字段名和参数名一致(ParameterName)

 OracleCommand cmd = new OracleCommand(sql, connection);
OracleParameter a = new OracleParameter();
a.Direction = ParameterDirection.Input;
a.ParameterName = valuei.ToString();
a.Value =System.byte[]类型的值;
a.OracleType = OracleType.Blob;
cmd.Parameters.Add(a);

connection.Open();
 cmd.ExecuteNonQuery();

如:

 ArrayList fieldNames = getInsertFields();
            string content = "";
            //content = "ID,";
            connection.Open();
            int numberOfAdd =(int)fieldNames[fieldNames.Count - 1];
            for (int k = 0; k < fieldNames.Count - 2; k++)
            {
                content = content + fieldNames[k].ToString() + ",";
            }
            content = content + fieldNames[fieldNames.Count - 1].ToString();
            WriteToLog(content, logPath);
            content = "导入的记录条数:" + dataTable.Rows.Count.ToString();
            WriteToLog(content, logPath);
            string sql = "";
           
            if (numberOfAdd == 0)
            {
                for (int j = 0; j < dataTable.Rows.Count; j++)
                {
                    ArrayList blobArray = new ArrayList();
                    ArrayList blobName = new ArrayList();
                    //int m = 0;
                    sql =@"INSERT INTO " + tableName + @" (";
                    for (int i = 0; i < fieldNames.Count - 2; i++)
                    {
                        //if(blobF.Contains(fieldNames[i].ToString()))
                        //{
                        //    sql = sql + ":"+fieldNames[i].ToString() + ",";
                        //}else
                        //{
                        sql = sql + fieldNames[i].ToString() + ",";
                        //}
                    }
                    sql = sql + fieldNames[fieldNames.Count - 2] + ") values (";
                    for (int i = 0; i < dataTable.Columns.Count - 1; i++)
                    {

                        if (dateOrNot(dataTable.Rows[j][i].ToString()))
                        {
                            sql = sql + "to_date('" + toFormatShortDate(dataTable.Rows[j][i].ToString()) + "','yyyy-mm-dd'),";
                        }
                        else if (dataTable.Rows[j][i].GetType().ToString() == "System.Byte[]")
                        {
                            blobArray.Add(dataTable.Rows[j][i]);
                            blobName.Add(fieldNames[i]);
                            sql = sql + ":" + fieldNames[i]  + ",";
                        }
                        else
                        {
                            sql = sql + "'" + dataTable.Rows[j][i].ToString() + "',";
                        }

                    }
                    if (dateOrNot(dataTable.Rows[j][dataTable.Columns.Count - 1].ToString()))
                    {
                        sql = sql + "to_date('" + toFormatShortDate(dataTable.Rows[j][dataTable.Columns.Count - 1].ToString()) + "','yyyy-mm-dd'))";
                    }
                    else if (dataTable.Rows[j][dataTable.Columns.Count - 1].GetType().ToString() == "System.Byte[]")
                    {
                        blobArray.Add(dataTable.Rows[j][dataTable.Columns.Count - 1]);
                        blobName.Add(fieldNames[dataTable.Columns.Count - 1]);
                        sql = sql + ":" + fieldNames[dataTable.Columns.Count - 1] + ")";
                    }
                    else
                    {
                        sql = sql + "'" + dataTable.Rows[j][dataTable.Columns.Count - 1].ToString() + "')";
                    }
                    OracleCommand cmd = new OracleCommand(sql, connection);
                    if (blobName.Count > 0)
                    {
                        for (int i = 0; i < blobArray.Count; i++)
                        {
                            OracleParameter a = new OracleParameter();
                            a.Direction = ParameterDirection.Input;
                            a.ParameterName = blobName[i].ToString();
                            a.Value = blobArray[i];
                            a.OracleType = OracleType.Blob;
                            cmd.Parameters.Add(a);
                        }
                    }
                    connection.Close();
                    connection.Open();
                    cmd.ExecuteNonQuery();
                }
            }

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值