Zdravím,
chci se jednoduše připojit k databázi (Northwind). Už několikrát jsem to zkoušel a povedlo se mi to (jak v GUI, tak v Console). Ale teď? Ani omylem... Je to nějaká prkotina, nebo už fakt nevím.
Používám klasicky: SqlClient -> DataReader. V obouch výjimkách mi to vyhodí do MessageBoxíku:
System.Collections.ListDictionaryInternal. To je nějaká chyba s kolekcemi, nebo co? Co to má společného s připojením, když volám metodu connect()? Asi jsem nepozorný nebo to bude hodně jalový kiks.
Díky moc. Jo, a abych nezapomněl, tak příkládám můj zdroják:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.Windows.Forms;
using System.Collections;
namespace Databaze
{
public partial class MyDatabase : Form
{
private SqlConnection conn;
private string connectionString = @"server = .\sqlexpress; integrated security = true; database = Northwind";
private SqlDataReader reader = null;
public MyDatabase()
{
InitializeComponent();
}
public void connect()
{
conn = new SqlConnection(connectionString);
try
{
conn.Open();
}
catch (Exception ex)
{
MessageBox.Show("Chyba připojení: " + ex.Data.ToString());
}
finally
{
lblStavShow.Text = conn.State.ToString();
}
}
public void showData()
{
SqlCommand cmd = new SqlCommand(@"SELECT * FROM Employees", conn);
try
{
reader = cmd.ExecuteReader();
while (reader.Read())
{
listboxData.Items.Add(reader[0].ToString() + "" + reader[1] + "" + reader[2] + "" + reader[3] + "" + reader[4]);
}
}
catch (Exception ex)
{
MessageBox.Show("Chyba: " + ex.Data);
}
finally
{
reader.Close();
conn.Close();
}
}
private void btnDataReader_Click(object sender, EventArgs e)
{
showData();
}
private void btnConnect_Click(object sender, EventArgs e)
{
connect();
}
}
}