wyl458619358 2017-06-07 08:14 采纳率: 0%
浏览 805

ASP.NET上传excel文档并读写进oracle有问题

ASP.NET上传excel文档并读写进oracle,但是现在data table存入oracle那段出了问题,sourcecode如下

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Collections;

using System.Configuration;

using System.Data;

using System.Web.Security;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls.WebParts;

using System.IO;

using System.Data.OleDb;

using System.Data.SqlClient;

using System.Web.UI.WebControls;
using System.Data.OracleClient;

public partial class his_control1 : System.Web.UI.Page

{
protected void Page_Load(object sender, EventArgs e)
{

}
 /// <summary>  
    /// 上传文件  
    /// </summary>  
    /// <param name="sender"></param>  
    /// <param name="e"></param>  
    protected void Button1_Click(object sender, EventArgs e)  
    {  
        string fileName = fileId.FileName;
        string savePath = Server.MapPath("../Uploadfile/");  
        FileOperatpr(fileName, savePath);  
        fileId.SaveAs(savePath + fileName);  
        DataOperator(fileName, savePath);  
    }  
    /// <summary>  
    /// 数据操作  
    /// </summary>  
    /// <param name="fileName"></param>  
    /// <param name="savePath"></param>  
    private void DataOperator(string fileName, string savePath)  
    {  
        string myString = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =  " + savePath + fileName + ";Extended Properties=Excel 8.0";  
        OleDbConnection oconn = new OleDbConnection(myString);  
        oconn.Open();  
        DataSet ds = new DataSet();  
        OleDbDataAdapter oda = new OleDbDataAdapter("select * from [Control$]", oconn);  
        oda.Fill(ds);  
        oconn.Close();  
        DataSetOperator(ds,savePath+fileName);  
    }  
    /// <summary>  
    /// 数据集操作  
    /// </summary>  
    /// <param name="ds"></param>  
    private void DataSetOperator(DataSet ds,string filePath)  
    {
         using (Oracle.ManagedDataAccess.Client.OracleConnection conn = new Oracle.ManagedDataAccess.Client.OracleConnection())
        {

        conn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        conn.Open();

        int k = 0;  
        if (ds.Tables[0].Rows.Count < 1)  
        {  
            Response.Write("<script>alert('没有数据!')</script>");  
            return;  
        }  
        try  
        {

            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)  
            {
                Oracle.ManagedDataAccess.Client.OracleCommand cmd = new Oracle.ManagedDataAccess.Client.OracleCommand("insert into SCC_B2B.HIS_DEVICE(DEVICE_NAME,DEVICE_TYPE)values( '"+ds.Tables[0].Rows[i][0].ToString()+"','"+ds.Tables[0].Rows[i][1].ToString()+"')",conn);

                cmd.ExecuteNonQuery();  
                k += cmd.ExecuteNonQuery();

            }
            conn.Close();
            conn.Dispose();
        }  
        catch (Exception ex)  
        {  
            Response.Write("发生异常" + ex.Message);  
        }  
        finally  
        {  
            Response.Write("上传成功" + k + "条");  
            File.Delete(filePath);  
        }
         }
        }

    /// <summary>  
    /// 文件操作  
    /// </summary>  
    /// <param name="fileName"></param>  
    /// <param name="savePath"></param>  
    private void FileOperatpr(string fileName, string savePath)  
    {  
        if (!Directory.Exists(savePath))  
        {  
            Directory.CreateDirectory(savePath);  
        }  
        if (File.Exists(savePath + fileName))  
        {  
            File.Delete(savePath + fileName);  
        }  
    }  

}

运行之后只能增加一笔数据,然后就报错ORA-00001: unique constraint violated
网上搜了一下发现有更好更快的方法将datatable里的数据insert到oracle,请大神帮忙

  • 写回答

1条回答 默认 最新

  • 12138哇哈哈 2017-06-08 01:40
    关注

    表字段中是否有主键约束,当你新增的时候违反了唯一性

    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料