我正在做一个程序,将数据从Excel文件导入SQL Server数据库,我希望我的程序不允许在数据库中放置重复项。
为此,我在列中设置了一个约束,我不希望任何记录重复...但是当我运行程序时,它会向我显示以下消息:
“运动描述”列不允许DBNull.Value
这是我的代码:
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();
}
给我一个错误的行:
sqlBulk.WriteToServer(dReader);
我的桌子是这样的:
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
)
不要介意葡萄牙语中的列名...
发布于 2019-05-10 14:21:25
你的'[DescriçãodoMovimento]'这个专栏在从excel读取时具有空值。请检查您的Excel数据。
https://stackoverflow.com/questions/-100006705
复制相似问题