• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

c# wyświetlanie danych z bazy sqlite

Object Storage Arubacloud
0 głosów
1,712 wizyt
pytanie zadane 8 stycznia 2017 w C i C++ przez BeFree Początkujący (380 p.)

Cześć wszystkim,

Uczę się programować i mam pewien problem.

Piszę prostą aplikację w C# z lokalną bazą danych SQLite. połączenie z bazą danych udało mi się okodować, ale nie bardzo wiem jak okodować button, po naciśnięciu którego dane z wybranej tabeli pojawią się w dataGridView.

Pomożecie? smiley

2 odpowiedzi

0 głosów
odpowiedź 9 stycznia 2017 przez maciej.tokarz Nałogowiec (27,280 p.)
wybrane 29 czerwca 2017 przez BeFree
 
Najlepsza

Cześć!

Generalnie masz kilka warstw tej aplikacji:

  1. Schemat, który odzwierciedla baza danych (tabele, pola).
  2. Dostęp do określonych danych, który naturalnie opiera się na połączeniu z bazą.
  3. Logikę aplikacji, która na podstawie interakcji z GUI wykona określone zadania.
  4. Widok, który wypełni się oczekiwanymi danymi.

Warto poszukać rozwiązania do pracy z danymi, które oprze się na obiektach, np. Entity Framework. Warto również zapoznać się z sposobami bindowania (łączenia) określonych miejsc widoku z właściwościami logiki.

Słowo klucz: MVVM


M.

0 głosów
odpowiedź 9 stycznia 2017 przez BeFree Początkujący (380 p.)
edycja 10 stycznia 2017 przez BeFree

Możecie rzucić okiem? Co robię źle?

Proszę o wyrozumiałość smiley



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SQLite;
using System.IO;


namespace WindowsFormsApplication8
{
    public partial class Form1 : Form
    {
        SQLiteConnection polaczenie = new SQLiteConnection(string.Format("Data Source = {0}", Path.Combine(Application.StartupPath, "Testowa.db")));
        SQLiteCommand komenda;
        string zapytanieSQL="";
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

            SQLiteCommand zapytanieSQL = new SQLiteCommand("SELECT * FROM Osoby", polaczenie);
            try
            {
                SQLiteDataAdapter moja = new SQLiteDataAdapter();
                moja.SelectCommand = zapytanieSQL;
                DataTable tabela = new DataTable();
                moja.Fill(tabela);

                BindingSource zrodlo = new BindingSource();
                zrodlo.DataSource = tabela;
                dataGridView1.DataSource = zrodlo;

            }
            catch(Exception ex)
            {
                MessageBox.Show("Błąd");
            }
        }

       
    }
}

 

komentarz 9 stycznia 2017 przez maciej.tokarz Nałogowiec (27,280 p.)
edycja 9 stycznia 2017 przez maciej.tokarz

Przyznam się bez bicia, że WinFormsów nie używałem, a jedynie xaml (Silverlight, WPF, UWP), ale pewnie w ten deseń to będzie:
 

using System;
using System.Data;
using System.Data.SQLite;
using System.IO;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Test();
        }

        public void Test()
        {
            try
            {
                using (var connection = new SQLiteConnection($"Data Source = {Path.Combine(Application.StartupPath, "Test.db")}"))
                {
                    connection.Open();
                    var query = new SQLiteCommand("SELECT name FROM employees", connection);
                    var reader = query.ExecuteReader();
                    var table = new DataTable();
                    table.Columns.Add("Name");

                    if (reader.HasRows)
                        while (reader.Read())
                            table.Rows.Add(reader["name"].ToString());

                    dataGridView1.DataSource = table;

                    reader.Close();
                    connection.Close();
                }
            }
            catch (Exception ex)
            {
                Console.Write(@"Błąd: {0}", ex.Message);
                throw;
            }            
        }
    }
}

 

Nie otwierałeś połączenia no i nie wiem czy kopiujesz bazę do bin/Debug nadając jej np. właściwość Copy To Output Directory: Copy always.

TIP: Menedżer do SQLite naszego rodaka

M.

komentarz 10 stycznia 2017 przez BeFree Początkujący (380 p.)
edycja 10 stycznia 2017 przez BeFree
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SQLite;
using System.Data;
using System.IO;


namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public SQLiteConnection con = new SQLiteConnection(string.Format("Data Source = {0}", Path.Combine(Application.StartupPath, "Nowa.db"))); 

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
        }

        private DataTable get()
        {
            DataTable returnTable = new DataTable();
            con.Open();
            SQLiteCommand cmd = con.CreateCommand();
            cmd.CommandText = "Select * from Test ";
            SQLiteDataAdapter adapter = new SQLiteDataAdapter(cmd);
            adapter.Fill(returnTable);
            con.Close();
            return returnTable;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            DataTable dt = get();
            dataGridView1.AutoGenerateColumns = true;
            dataGridView1.DataSource = dt;
        }
    }
}

Wielkie dzięki za odpowiedź! Jakoś sobie z tym poradziłem.

Niby banalne, ale nie mogłem tego dobrze ułożyć.

Początki... smiley

Podobne pytania

0 głosów
1 odpowiedź 648 wizyt
pytanie zadane 12 sierpnia 2018 w C# przez Cacu003 Początkujący (260 p.)
0 głosów
1 odpowiedź 983 wizyt
0 głosów
1 odpowiedź 1,015 wizyt
pytanie zadane 26 grudnia 2016 w Java przez azybad Mądrala (5,500 p.)

92,568 zapytań

141,420 odpowiedzi

319,617 komentarzy

61,953 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...