0
我正在爲我的學校做一個項目,在那裏我必須製作一個C#Windows Forms應用程序,讓我可以與我的PostgreSQL數據庫進行交互。我創建了一個列表框,它應該從我的數據庫中獲取表格的名稱,當我選擇這些名稱時,表格中的數據將顯示在表格中的datagridview對象中。但問題是,我的所有列表框值都是System.Data.DataRowView,而datagridview只顯示列表中第一個表的值。Listbox返回System.Data.DataRowView而不是值
代碼:
DataTable tabulusaraksts = new DataTable();
DataTable tabula = new DataTable();
NpgsqlDataAdapter adapter = new NpgsqlDataAdapter();
NpgsqlDataAdapter adapter2 = new NpgsqlDataAdapter();
string tab;
public datubaze()
{
InitializeComponent();
string connectionstring = "Server=localhost;Port=5432;UserId=postgres;Password=students;Database=retrospeles;";
//string connectionstring = String.Format("Server={0};Port={1};" +
// "User Id={2};Password={3};Database={4};",
// serveris.ToString(), port.ToString(), user.ToString(),
// password.ToString(), database.ToString());
NpgsqlConnection ncon = new NpgsqlConnection(connectionstring);
NpgsqlCommand listfill = new NpgsqlCommand("select table_name from INFORMATION_SCHEMA.tables WHERE table_schema = ANY (current_schemas(false));", ncon);
adapter.SelectCommand = listfill;
adapter.Fill(tabulusaraksts);
listBox1.DataSource = tabulusaraksts;
listBox1.DisplayMember = "table_name";
NpgsqlCommand showtable = new NpgsqlCommand("select * from " + tab +";" , ncon);
adapter2.SelectCommand = showtable;
}
public void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
tab = listBox1.GetItemText(listBox1.SelectedItem);
adapter2.Fill(tabula);
dataGridView1.DataSource = tabula;
}
它的工作,但現在當我嘗試從列表框中選擇一個值,它給了我一個錯誤:錯誤:42601:語法錯誤在或接近「;」 –
@KristiansKonters不會構造'adapter2。 ''datubaze'方法中的SelectCommand'因爲'tab'仍然是空字符串,並且在選擇了listbox項目後獲取它的值。在'listBox1_SelectedIndexChanged'方法中創建它。 – Nino
它的工作,非常感謝你! –