Hej jeg har et problem med at kopiere data fra et excel dokument til ms sql 2005.
Jeg har en fil som hedder database.xls, hver gang jeg prøver at kopiere data fra det til sql kommer den med en fejl:
"Column 'tid' does not allow DBNull.Value."
I kan se fejlmeddelselsen på:
http://www.radio.web.surftown.dk/admin/indset_program.aspx og så klik på den øverste knap "button"
Men når jeg checker "allow null" af i db så insætter den data i sql serveren.
Men tiden bliver skrevet sådan her:
30-12-1899 12:00:00 istedet for bare 12:00 som jeg har skrevet det i excel.
Så er der nogle som ved hvordan jeg løser problemet hvis "allow null" ikke er checked?
Min excel fil ser sådan ud:
id, tid, txt, dato
-----------------------------------
1, 12:00,dnwq, 23-12-2008
2, 14:00, aca, 23-12-2008
min sql server database ser sådan ud med datatypes:
ID(bigint),
tid(varchar(50),
txt(text),
dato(datetime)
Min kode som kopiere dataen til sql ser sådan ud:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web.Security;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.Common;
using System.Data.OleDb;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string excelConnectionString = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=""Excel 8.0;HDR=YES;""", Server.MapPath("database.xls"));
using (OleDbConnection connection =
new OleDbConnection(excelConnectionString))
{
OleDbCommand command = new OleDbCommand
("Select * FROM [Sheet1$]", connection);
connection.Open();
using (DbDataReader dr = command.ExecuteReader())
{
string sqlConnectionString = "Data Source=212.97.133.33;Initial Catalog=kischi2_database;UID=kischi2_radio;PWD=kischi;";
using (SqlBulkCopy bulkCopy =
new SqlBulkCopy(sqlConnectionString))
{
bulkCopy.DestinationTableName = "PROGRAM";
bulkCopy.WriteToServer(dr);
connection.Close();
}
}
}
}
}
Jeg håber i forstår hvad jeg mener og at i kan hjælpe?
Det skal også lige siges at den indsætter dataen rigtigt, hvis man udfylder textboxene på siden. Det er kun når man kopiere fra excel.
Mvh. Adam