Я использую объект SqlBulkCopy для записи datatable в таблицу сервера sql. Тем не менее, каждый раз, когда я проверяю свою базу данных, она остается неизменной без каких-либо изменений. AПочему мой SqlBulkCopy не работает
Я попытался выполнить поиск Google, чтобы определить свою проблему, но я не могу ее решить.
Данные относятся к файлу .xls.
public static DataTable dt = new DataTable();
private void ExportToGrid(String path, String filen)
{
int idx = filen.IndexOf(".");
string tf = filen.Remove(idx, 4);
OleDbConnection MyConnection = null;
DataSet DtSet = null;
OleDbDataAdapter MyCommand = null;
MyConnection = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0; Data Source='" + path + "';Extended Properties=Excel 8.0;");
ArrayList TblName = new ArrayList();
MyConnection.Open();
DataTable schemaTable = MyConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
foreach (DataRow row in schemaTable.Rows)
{
TblName.Add(row["TABLE_NAME"]);
}
MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [" + TblName[0].ToString() + "]", MyConnection);
DtSet = new System.Data.DataSet();
MyCommand.Fill(DtSet);
MyCommand.FillSchema(DtSet, SchemaType.Source);
DataTable dt = new DataTable();
dt = DtSet.Tables[0];
Session["dt"] = dt;
int x = dt.Rows.Count;
MyConnection.Close();
if (dt.Rows.Count > 0)
{
theGridView.DataSource = dt;
theGridView.DataBind();
}
if (System.IO.File.Exists(path))
{
System.IO.File.Delete(path);
}
}
Это мой писатель функция
private void StartImport()
{
string servername = server;
string database = database;
string tbl = "dbo.LinkDb";
Stopwatch sw = new Stopwatch();
sw.Start();
SqlBulkCopy bulkCopy = new SqlBulkCopy("Data Source=" + servername + ";Initial Catalog=" + database + ";Integrated Security=SSPI", SqlBulkCopyOptions.TableLock);
bulkCopy.DestinationTableName = tbl;
bulkCopy.WriteToServer(dt);
sw.Stop();
lblResult.Visible = true;
lblResult.Text = (sw.ElapsedMilliseconds/1000.00).ToString();
}
Ниже приведен скриншот таблиц, хранящихся в моей SQL Server. Уверяю вас, что я соблюдаю правила Case Sensitive.
Существовал исключение не брошено и среднее время истекшее 0,018 - 0,020 сек
Цените любой помогает.
Спасибо
Сколько строк имеет 'dt' в то время, когда вы вызываете« WriteToServer »? совпадают ли столбцы? (последнее, однако, должно проявляться в исключении, а не ничего делать) –
Я думаю, что столбцы совпадают. В dt есть еще одна строка. Я также озадачен тем, почему он еще не работает, но он не стал исключением ... – rofans91