Hallo, ich komme an einer Stelle nicht weiter und bräuchte Hilfe.
- Und zwar soll das Programm sich mit einem Server verbinden. (Button1)
- Die Namen aller Datenbanken auslesen und in "Tabs" geschrieben werden. (Button2)
- Danach die Tabellennamen der Datenbanken auslesen und in eine die passenden Tabs
in eine ListView geschrieben werden (Button3)
Punkt 1 und 2 funktioniert soweit. Jetzt habe ich das Problem, dass wenn ich die Tabellen-Namen aus der Datenbank "master" in die ListView schreibe, er den letzten Tab dafür nimmt. Die Datenbank "master" ist aber bereits der erste Tab.
Ich hab ein wenig rumexperimentiert und die ausgelesenen Datenbanknamen und Tabellennamen in ArrayList gepackt. Meine Idee war folgende:
C#-Quelltext
1:
| DatenbankArr[0] = listView.Columns.Add(TabellenArr[...].ToString()); |
In Worten: Nimm den ersten Datenbanknamen (0) und schreibe dort die Tabellennamen rein, die im "TabellenArr"-ListArray liegen.
Nun frage ich mich wie er denn wissen soll, das das erste Element in DatenbankArr zum ERSTEN Tab gehört und hier weiss ich nicht weiter.
Davor habe ich versuch die Tabs anzusprechen, wusste auch da auch nicht so recht wie ich das machen soll. Mit Indexof?
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103:
| using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; using System.Data.Sql; using System.Collections;
namespace DBAnalysierer { public partial class Form1 : Form { private SqlConnection connection; private ArrayList DatenbankArr; private ArrayList TabellenArr; private ListView listView; public Form1() { InitializeComponent(); textBox1.Text = "RK-WIN10\\SQLEXPRESS"; textBox2.Text = "TestDemo"; textBox3.Text = "sa"; textBox4.Text = "masterkey"; } private void button1_Click(object sender, EventArgs e) { SqlConnectionStringBuilder connectString = new SqlConnectionStringBuilder(); connectString.Add("Database", textBox2.Text); connectString.Add("Data Source", textBox1.Text); connectString.Add("User ID", textBox3.Text); connectString.Add("Password", textBox4.Text); connection = new SqlConnection(); connection.ConnectionString = connectString.ToString();
try { connection.Open(); } catch { MessageBox.Show("Es konnte keine Verbindung hergestellt werden"); } }
private void button2_Click(object sender, EventArgs e) { SqlDataReader myReader = null; SqlCommand myCommand = new SqlCommand("select name from sys.sysdatabases", connection); myReader = myCommand.ExecuteReader();
DatenbankArr = new ArrayList();
while (myReader.Read()) { tabControl1.TabPages.Add(myReader["name"].ToString()); ListViewCreator(); DatenbankArr.Add(myReader["name"]); } myReader.Close(); }
private void button3_Click(object sender, EventArgs e) { SqlDataReader myReader = null; SqlCommand myCommand = new SqlCommand("USE master select table_name from INFORMATION_SCHEMA.tables", connection); myReader = myCommand.ExecuteReader();
TabellenArr = new ArrayList();
while (myReader.Read()) { listView.Columns.Add(myReader["table_name"].ToString()); TabellenArr.Add(myReader["table_name"]); } myReader.Close(); }
public void ListViewCreator() {
listView = new ListView(); listView.Bounds = new Rectangle(new Point(10, 10), new Size(tabControl1.Width - 30, tabControl1.Height - 30)); listView.View = View.Details; listView.LabelEdit = false; listView.AllowColumnReorder = true; listView.FullRowSelect = true; listView.GridLines = true; ColumnHeader column1 = new ColumnHeader(); column1.Width = 159; column1.TextAlign = HorizontalAlignment.Left;
int i = tabControl1.TabCount - 1;
this.tabControl1.TabPages[i].Controls.Add(listView); } } } |
Moderiert von
Th69: C#-Tags hinzugefügt