Hallo zusammen
Ich habe folgendes Problem.
Ich bin daran ein C# Programm zu schreiben, welches mir aus einer .mdb Datenbank tabellen in einem DataGridView anzeigt (funktioniert) und das Schema der Datenbank (Tabellen, Atribute, Schlüssel usw) hirarchisch in einer ListBox anzeigt.
Soweit so gut, nun habe ich das Problem, dass es mir bei conn.Open(null, null, null, 0); immer eine "COMException wurde nicht behandelt (Kein zulässiger Dateinname)" zurückgibt.
Habt ihr eine Idee?
Zur Veranschaulichung der Source:
(Die Fehlerstelle wurde mit "//HIER PASSIERT DIE COMEXCEPTION" markiert)
Ich habe folgendes Problem.
Ich bin daran ein C# Programm zu schreiben, welches mir aus einer .mdb Datenbank tabellen in einem DataGridView anzeigt (funktioniert) und das Schema der Datenbank (Tabellen, Atribute, Schlüssel usw) hirarchisch in einer ListBox anzeigt.
Soweit so gut, nun habe ich das Problem, dass es mir bei conn.Open(null, null, null, 0); immer eine "COMException wurde nicht behandelt (Kein zulässiger Dateinname)" zurückgibt.
Habt ihr eine Idee?
Zur Veranschaulichung der Source:
(Die Fehlerstelle wurde mit "//HIER PASSIERT DIE COMEXCEPTION" markiert)
Code:
/**
* DB SCHNITTSTELLE | VERSION 1
* SIMON WÜTHRICH 2010
* 303&104
*
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Diagnostics;
using System.Drawing;
using System.EnterpriseServices;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ConnectToAccess
{
public partial class Form1 : Form
{
private OleDbCommand m_cd = null;
private OleDbConnection m_con = null;
private bool m_DbEroeffnet;
private string m_kurzName;
private string m_NameMDB;
//Definieren der Instanzvariablen
OleDbConnection db_verbindung = null;
OleDbCommand db_anweisung = null;
OleDbDataAdapter db_adapter = null;
DataTable db_datentabelle = null;
OleDbConnection con = new OleDbConnection();
public Form1()
{
string currentsource;
currentsource = Environment.CurrentDirectory;
InitializeComponent();
db_verbindung = new OleDbConnection();
db_verbindung.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source= stockmanagement.mdb";
db_verbindung.Open();
db_anweisung = new OleDbCommand();
db_anweisung.Connection = db_verbindung;
db_datentabelle = new DataTable();
//db_verbindung.Close();
//MessageBox.Show(db_anweisung.ToString());
//Listbox mit DB Daten
ADOX.Catalog catalog = new ADOX.Catalog();
ADODB.Connection conn = new ADODB.Connection();
conn.ConnectionString = Properties.Settings.Default.ConnectStr + m_kurzName;
conn.Open(null, null, null, 0); //HIER PASSIERT DIE COMEXCEPTION
LBoxSchema.Items.Clear();
catalog.ActiveConnection = conn;
// Alle Tabellen auflisten:
for (int i = 0; i < catalog.Tables.Count; i++)
{
LBoxSchema.Items.Add(catalog.Tables[i].Name);
//Die Spalten anzeigen (über die Eigenschaft Type können Sie den Datentyp ermitteln):
LBoxSchema.Items.Add(" Spalten : ");
for (int j = 0; j < catalog.Tables[i].Columns.Count; j++)
{
LBoxSchema.Items.Add(" " + catalog.Tables[i].Columns[j].Name);
}
//Die Tabellenschlüssel bestimmen:
LBoxSchema.Items.Add(" Schlüssel: ");
for (int w = 0; w < catalog.Tables[i].Keys.Count; w++)
{
string s = "";
for (int k = 0; k < catalog.Tables[i].Keys[w].Columns.Count; k++)
{
s += catalog.Tables[i].Keys[w].Columns[k].Name + " ";
}
LBoxSchema.Items.Add(" " + catalog.Tables[i].Keys[w].Name + " -> [" + s.Trim() + "]");
}
}
}
private void Form1_Load(object sender, EventArgs e)
{
string crlf = Environment.NewLine;
try
{
}
catch (OleDbException odex)
{
MessageBox.Show(odex.Message);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
{
//ZeigeSchemaAktuelleDB();
}
}
private void button1_Click(object sender, EventArgs e)
{
this.Close();
}
private void button2_Click(object sender, EventArgs e)
{
//Anweisung
db_anweisung.CommandText = "Select * from CDVerwaltung";
db_adapter = new OleDbDataAdapter(db_anweisung);
//Füllen
int anzahl = db_adapter.Fill(db_datentabelle);
dataGridView1.DataSource = db_datentabelle;
}
private void button3_Click(object sender, EventArgs e)
{
//Wenn keine Tabelle eingegeben ist, auch keine Aktion machen
if (textBox1.Text == "")
{ }
else
{
//Mittels try&catch die Fehlermeldung (wenn falscher Name eingegeben wird) abfangen&wiedergeben
try
{
db_datentabelle.Clear();
//Eingegebene Tabelle auslesen
string entrd_text = textBox1.Text;
//Zusammensetzen
string anweisung = "Select * from " + entrd_text;
//Kompl. Anweisung
db_anweisung.CommandText = anweisung;
db_adapter = new OleDbDataAdapter(db_anweisung);
//Abfüllen
int anzahl = db_adapter.Fill(db_datentabelle);
}
catch (OleDbException odex)
{
MessageBox.Show(odex.Message);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
dataGridView1.DataSource = db_datentabelle;
dataGridView1.Refresh();
}
}
private void listBox1_SelectedIndexChanged_1(object sender, EventArgs e)
{
//Items der DB über Formdesigner einfügen
//Selected Item in die Textbox schreiben
textBox1.Text = listBox1.SelectedItem.ToString();
}
}
}