I Utilizzare Oledb di leggere un AccessFile (accdb) per DataSet, io non so i nomi delle tabelle o colonne, L'implementazione regolare è:Utilizzare OLE DB per leggere AccessFile da Stream per DataSet
public void GetAccessDB(string filepath){
this.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = " + filepath;
// get Table Names
this.TableNames = new List<string>();
using (System.Data.OleDb.OleDbConnection oledbConnection = new System.Data.OleDb.OleDbConnection(this.ConnectionString))
{
oledbConnection.Open();
System.Data.DataTable dt = null;
dt = oledbConnection.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
foreach (System.Data.DataRow row in dt.Rows)
{
string strSheetTableName = row["TABLE_NAME"].ToString();
if (row["TABLE_TYPE"].ToString() == "TABLE")
this.TableNames.Add(strSheetTableName);
}
oledbConnection.Close();
}
this.Dataset = new System.Data.DataSet();
using (System.Data.OleDb.OleDbConnection oledbConnection = new System.Data.OleDb.OleDbConnection(this.ConnectionString))
{
foreach (string table in this.TableNames)
{
string command = string.Format("SELECT * FROM {0};", table);
using (System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(command, oledbConnection))
{
cmd.CommandType = System.Data.CommandType.Text;
oledbConnection.Open();
System.Data.OleDb.OleDbDataReader dr = cmd.ExecuteReader();
this.Dataset.Load(dr, System.Data.LoadOption.OverwriteChanges, table);
oledbConnection.Close();
}
}
}
}
Ma Ho bisogno di ottenere il file di accesso da Stream, e non riesco a scriverlo sul disco temporaneo, quindi qual è il tuo suggerimento?
Mi serve Questo sovraccarico di GetAccessDB(Stream AccessFile)
? Cerco e trova This, ma non è chiaro per me, ho bisogno di ottenere finalmente DataSet da tutte le tabelle in Access File.
Qualcuno sa di questo?
Perché si desidera eseguire le operazioni sui dati in un file 'Access' aperto come flusso? Solo curioso. –
@AlexFilipovici I client caricano il file di accesso E ho bisogno di leggerli e trovare i dati di destinazione e memorizzati su SQL e mostrare una tabella di dati di destinazione al client, ma non posso (qualche limitazione) scrivere i file sul disco! – Saeid
come mai non si può fare il lavoro sul disco locale ..? per favore spiega meglio il tuo ragionamento in modo che gli altri possano capire e non guidarti lungo il sentiero d'oro come dicono – MethodMan