【发布时间】:2014-07-29 00:15:24
【问题描述】:
我正在做一个简单的项目,使用 Visual Studio 12 和 C# 将数据从 Excel 导出到 SQL Server。我设法从 Excel 导入数据集,但没有将它们插入到我的数据库中,尽管代码显示了一个积极的消息框,我已经设置它告诉我什么时候可以。
表示我的数据成功导出到SQL,但是当我选择“显示表数据”时没有显示数据;桌子是空的。这是我的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
using System.Reflection;
using System.IO;
using System.Data.OleDb;
using System.Data.Common;
using System.Data.SqlClient;
namespace testoledb
{
public partial class Form1 : Form
{
DataSet OleDs = new DataSet();
OleDbDataAdapter OleAdapter = new OleDbDataAdapter();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
{
}
private void upload_excl_Click(object sender, EventArgs e)
{
string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
path = Path.Combine(path, "AGENDA.xlsx");
string path2 = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
path2 = Path.Combine(path2, "Database1.mdf");
string OleConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+path+@";Extended Properties='Excel 12.0 Macro;MDR=Yes;ImportMixedTypes=Text;TypeGuessRows=0'"; //,HDR=Yes;IMEX=1""";
OleDbConnection OleConn = new OleDbConnection(OleConnectionString);
string OleStrCmd = "select * from [Feuil1$A1:I330]";
OleDbCommand OleCmd = new OleDbCommand(OleStrCmd, OleConn);
try
{
OleConn.Open();
OleDs.Clear();
OleAdapter.SelectCommand = OleCmd;
OleAdapter.Fill(OleDs);
dataGridView1.DataSource = OleDs.Tables[0];
//***************************************charger la base*******************************************************************************
using (DbDataReader dr = OleCmd.ExecuteReader())
{
// SQL Server Connection String
string sqlConnectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=" + path2 + ";Integrated Security=True";
// Bulk Copy to SQL Server
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString))
{
bulkCopy.DestinationTableName = "[dbo].[Table]";
bulkCopy.WriteToServer(dr);
MessageBox.Show("Data Exoprted To Sql Server Succefully");
}
}
//***********************************************************************************************
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
OleConn.Close();
}
}
}
}
【问题讨论】:
-
您必须以这种方式导入数据吗?如果没有,你应该可以很容易地使用
BULK INSERT -
你的
Table真的叫Table吗? -
这可能是个愚蠢的问题,但您确定没有导入数据吗?例如,您已经签入了 SSMS,但它不是吗?我只是问,因为听起来您已经编写了一个用于检索表记录的 UI,并且我想确保没有错误出现在这方面的风险。
-
顺便说一句,我也很想在这个问题上看到一个更好的标题。如果您有答案,您将更有可能获得答案。
-
@dub stylee :不,我是初学者,我只是这样找到它,所以我尝试了如果有另一个请带我去一个好的参考。谢谢^^。