你好,我有下面的代码由于某种原因无效:
我使用oledb从一个管道分隔文件中填充数据集,该文件通过asp.net Web应用程序上的fileupload控件上传。然后,我获取数据表,然后使用sql批量复制将数据复制到我已在sql中设置的表。
protected void btnUpload_Click(object sender, EventArgs e)
{
string filepath = fileUpload1.PostedFile.FileName;
PerformBulkCopy(GencoUpload(filepath));
}
public static DataTable GencoUpload(string path)
{
string full = Path.GetFullPath(path);
string file = Path.GetFileName(full);
string dir = Path.GetDirectoryName(full);
string connString = "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=\"" + dir +
"\\\";" + "Extended Properties=\"text;HDR=Yes;Format=Delimited(|)\";";
string query = "SELECT * FROM " + file;
DataTable dt = new DataTable();
OleDbDataAdapter dAdapter = new OleDbDataAdapter(query, connString);
try
{
dAdapter.Fill(dt);
}
catch
{
// catch code
}
dAdapter.Dispose();
return dt;
}
private void PerformBulkCopy(DataTable GencoInfo)
{
string conStr = ConfigurationManager.ConnectionStrings["EDI"].ConnectionString;
using (SqlBulkCopy bulkcopy = new SqlBulkCopy(conStr))
{
bulkcopy.DestinationTableName = "dbo.GencoUploadTempTable";
bulkcopy.WriteToServer(GencoInfo);
}
}
有人可以帮我解释为什么这不能加载到我的sql数据库中?谢谢。
答案 0 :(得分:1)
这应该做的工作...............
public static DataTable columnNamessheet1(String excelFile)
{
string connString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excelFile + ";Extended Properties='Excel 12.0;HDR=yes'";
string connectionstring ="Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DebitCare;Data Source=SSDEV7-HP\\SQLEXPRESS";
using (OleDbConnection conn = new OleDbConnection(connString))
{
SqlConnection SqlConn1 = new SqlConnection(connectionstring);
SqlConn1.Open();
OleDbCommand odc = new OleDbCommand(string.Format("Select LoanNumber,CustomerName,DateofBirth,MobileNo,SanctionDate,EmployerName FROM [BAJAJ DUMP$]"), conn);
conn.Open();
OleDbDataReader reader = odc.ExecuteReader();
DataTable sheetSchema = reader.GetSchemaTable();
SqlBulkCopy sqlbulk = new SqlBulkCopy(SqlConn1);
sqlbulk.DestinationTableName = "CUSTOMER_DETAILS";
sqlbulk.ColumnMappings.Add("LoanNumber", "CUSTOMER_LOAN_NO");
sqlbulk.ColumnMappings.Add("CustomerName", "CUSTOMER_ NAME");
sqlbulk.ColumnMappings.Add("DateofBirth", "CUSTOMER_DOB");
sqlbulk.ColumnMappings.Add("MobileNo", "CUSTOMER_MOBILE NUMBER");
sqlbulk.ColumnMappings.Add("SanctionDate", "CUSTOMER_SANCTION DATE");
sqlbulk.ColumnMappings.Add("EmployerName", "CUSTOMER_COMPANY NAME");
sqlbulk.WriteToServer(reader);
conn.Close();
return sheetSchema;
}
}
答案 1 :(得分:0)
尝试这个并在catch中放置一个断点:
string connString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;DataSource={0};Extended Properties=\"text;HDR=Yes;Format=Delimited(|)\";", dir);
try
{
dAdapter.Fill(dt);
}
catch (Exception exc)
{
string myErrorMsg = exc.Message;
}