mysql外部表不是预期格式,错误:附加信息:外部表不是预期的格式

Need to import data from excel to Mysql. I am getting an error when fetching the excel sheet to database table.i got an error message like this

external table is not in the expected format

in c# windows form application.So any one find where exactly the error.

This is what I am trying

using MySql.Data.MySqlClient;

using System;

using System.Data;

using System.Data.OleDb;

using System.Data.SqlClient;

using System.Windows.Forms;

namespace IMPORT

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

String MyConString = "SERVER=*******;" +

"DATABASE=db;" +

"UID=uid;" +

"PASSWORD=pwd;" + "Convert Zero Datetime = True";

private void ButtonFile_Click(object sender, EventArgs e)

{

OpenFileDialog openfiledialog1 = new OpenFileDialog();

openfiledialog1.ShowDialog();

openfiledialog1.Filter = "allfiles|*.xls";

TextBox1.Text = openfiledialog1.FileName;

}

private void ButtonUpload_Click(object sender, EventArgs e)

{

String connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +

"Data Source=" + TextBox1.Text + ";" +

"Extended Properties=Excel 8.0;";

OleDbConnection xlConn = new OleDbConnection(connectionString);

xlConn.Open();

DataTable data = new DataTable();

OleDbCommand selectCmd = new OleDbCommand("SELECT * FROM [Sheet1$]", xlConn);

OleDbDataAdapter xlAdapter = new OleDbDataAdapter();

OleDbDataReader datare = selectCmd.ExecuteReader();

xlAdapter.Fill(data);

DataSet xlDataset = new DataSet();

string sqlConnectionString = MyConString;

using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString))

{

bulkCopy.ColumnMappings.Add("id", "id");

bulkCopy.ColumnMappings.Add("password", "password");

bulkCopy.ColumnMappings.Add("name", "name");

bulkCopy.DestinationTableName = "TableName";

bulkCopy.WriteToServer(datare);

MessageBox.Show("Upload Successfull!");

}

}

}

}

Thanks for your help in advance.

解决方案

Beside the exception, make sure that you always close connections. In any case, the following might fix your issues:

String connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +

"Data Source=" + TextBox1.Text + ";" +

"Extended Properties=Excel 8.0;";

using (OleDbConnection excel_con = new OleDbConnection(connectionString ))

{

excel_con.Open();

DataTable dtExcelData = new DataTable();

//[OPTIONAL]: It is recommended as otherwise the data will be considered as String by default.

dtExcelData.Columns.AddRange(new DataColumn[3] { new DataColumn("Id", typeof(int)),

new DataColumn("Name", typeof(string)),

new DataColumn("Password",typeof(string)) });

using (OleDbDataAdapter oda = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", excel_con))

{

oda.Fill(dtExcelData);

}

excel_con.Close();

string consString = MyConString;

using (SqlConnection con = new SqlConnection(consString))

{

using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con))

{

//Set the database table name

sqlBulkCopy.DestinationTableName = "dbo.TableName";

sqlBulkCopy.ColumnMappings.Add("Id", "Id");

sqlBulkCopy.ColumnMappings.Add("Password", "Password");

sqlBulkCopy.ColumnMappings.Add("Name", "Name");

con.Open();

sqlBulkCopy.WriteToServer(dtExcelData);

con.Close();

MessageBox.Show("Upload Successfull!");

}

}

}

You have to make sure that the column names match and that you table name is correct as well.

This is based on an example found here.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值