首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在asp.net中修复“列'xxxx'不允许DBNull.Value。”

如何在asp.net中修复“列'xxxx'不允许DBNull.Value。”
EN

Stack Overflow用户
提问于 2019-05-10 04:56:31
回答 1查看 0关注 0票数 0

我正在做一个程序,将数据从Excel文件导入SQL Server数据库,我希望我的程序不允许在数据库中放置重复项。

为此,我在列中设置了一个约束,我不希望任何记录重复...但是当我运行程序时,它会向我显示以下消息:

“运动描述”列不允许DBNull.Value

这是我的代码:

代码语言:javascript
复制
protected void Upload_Click(object sender, EventArgs e)
{
    string excelPath = Server.MapPath("~/Nova pasta/") + Path.GetFileName(FileUpload1.PostedFile.FileName);

    string filepath = Server.MapPath("~/Nova pasta/") + Path.GetFileName(FileUpload1.FileName);
    string filename = Path.GetFileName(filepath);
    FileUpload1.SaveAs(excelPath);
    string ext = Path.GetExtension(filename);

    String strConnection = @"Data Source=PEDRO-PC\SQLEXPRESS;Initial Catalog=costumizado;Persist Security Info=True;User ID=sa;Password=1234";
    string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filepath + ";Extended Properties=\"Excel 12.0 Xml;HRD=YES;IMEX=1;\"";

    OleDbConnection excelConnection = new OleDbConnection(excelConnectionString);

    OleDbCommand cmd = new OleDbCommand("Select * from [rptListaMovs_4$]", excelConnection);
    excelConnection.Open();

    cmd.ExecuteNonQuery();

    DataSet ds = new DataSet();
    SqlDataAdapter da = new SqlDataAdapter("Select * from [rptListaMovs_4$]", strConnection);
    OleDbDataReader dReader;
    dReader = cmd.ExecuteReader();
    using (SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection))
    {
        sqlBulk.DestinationTableName = "Dados";
        sqlBulk.ColumnMappings.Add("Data Mov", "Data Mov.");
        sqlBulk.ColumnMappings.Add("Data Valor", "Data Valor");
        sqlBulk.ColumnMappings.Add("Descrição do Movimento", "Descrição do Movimento");
        sqlBulk.ColumnMappings.Add("Valor em EUR", "Valor em EUR");

        sqlBulk.WriteToServer(dReader);
    }
    excelConnection.Close();
}

给我一个错误的行:

代码语言:javascript
复制
sqlBulk.WriteToServer(dReader);

我的桌子是这样的:

代码语言:javascript
复制
CREATE TABLE [dbo].[Dados] 
(
    [Data Mov.] [VARCHAR](200) NULL,
    [Data Valor] [VARCHAR](200) NULL,
    [Descrição do Movimento] [VARCHAR](200) UNIQUE NOT NULL,
    [Valor em EUR] [VARCHAR](200) NULL
)

不要介意葡萄牙语中的列名...

EN

回答 1

Stack Overflow用户

发布于 2019-05-10 14:21:25

你的'[DescriçãodoMovimento]'这个专栏在从excel读取时具有空值。请检查您的Excel数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档