C# edycja bazy danych Oracle przez dataGridView

0

Witam. Jak zrobić aby edytować poszczególne komórki tabeli? Chciałbym także zrobić dodawanie i usuwanie poszczególnych rekordów. W takiej postaci jak zrobiłem niestety po zmianie hasła, jest ono ustawiane dla całej kolumny haseł. Jeszcze lepszym rozwiązaniem byłaby likwidacja rozwiązania z dodatkowym polem tekstowym do wpisywania hasła tylko zmiana go bezpośrednio w tabeli, zostałby więc tylko przycisk zmień hasło i tabela z danymi w której po zmianie hasła wciskało by się przycisk zmień hasło i zmiana by następowała. Poniżej kod rozwiązania i zrzut ekranowy jak wygląda wynik po połączeniu z bazą danych Oracle.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data;
using System.Data.Odbc;

namespace program_komputerowy
{
    public partial class Form1 : Form
    {
        OdbcConnection conn = new OdbcConnection();
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            conn.ConnectionString =
      "Driver={Microsoft ODBC for Oracle};" +
      "Server= xe ;" +
      "Uid= mojabaza ;" +
      "Pwd= mojabaza2012 ;";
            conn.Open();
            System.Console.WriteLine(conn.Database + " " + conn.DataSource);
            OdbcCommand sel = conn.CreateCommand();
            sel.CommandText = "SELECT * FROM SPRZEDAWCY";
            OdbcDataReader wyn = sel.ExecuteReader();
            while (wyn.Read())
            {
                Console.WriteLine(wyn["id_sprzedawcy"] + " " + wyn["imie"] + " " + wyn["nazwisko"] + " " + wyn["login"] + " " + wyn["haslo"]);
            }
            wyn.Close();
            // OdbcDataAdapter adapter = new OdbcDataAdapter(sel.CommandText, conn);
            /* dataSet1.Clear();
             adapter.Fill(dataSet1, "sprzedawcy");
             dataGridView1.DataSource = dataSet1.Tables["sprzedawcy"];*/
            dataSet1.Clear();
            odbcDataAdapter1.Fill(dataSet1, "SPRZEDAWCY");
            dataGridView1.DataSource = dataSet1.Tables["SPRZEDAWCY"];
            conn.Close();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            conn.ConnectionString =
    "Driver={Microsoft ODBC for Oracle};" +
    "Server= xe;" +
    "Uid= mojabaza ;" +
    "Pwd= mojabaza2012 ;";
            conn.Open();
            System.Console.WriteLine(conn.Database + " " + conn.DataSource);
            string sel;// ="Update
            sel = "Update Sprzedawcy set Haslo =?";
            OdbcCommand upd = new OdbcCommand(sel, conn);
            OdbcParameter o = new OdbcParameter();
            o.Value = this.textBox1.Text;
            upd.Parameters.Add(o);

            int wyn = upd.ExecuteNonQuery();

            Console.WriteLine("ilosc wierszy" + wyn);

            conn.Close();
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            dataSet1.AcceptChanges();

        }
        private void odbcDataAdapter1_RowUpdated(object sender, OdbcRowUpdatedEventArgs e)
        {

        }

        private void odbcConnection1_InfoMessage(object sender, OdbcInfoMessageEventArgs e)
        {

        }

        private void bindingSource1_CurrentChanged(object sender, EventArgs e)
        {

        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}
0

W takiej postaci jak zrobiłem niestety po zmianie hasła, jest ono ustawiane dla całej kolumny haseł.

Bo sqla wać pan nie zna.

Update Sprzedawcy set Haslo =? WHERE id_sprzedawcy=****
0

Witam, zmodyfikowałem dość znacznie ten kod bo wydawał mi się mało przejrzysty, jednak napotkałem kolejny problem mimo, ze łączy się z bazą nie udaje się aktualizować bazy. W czym może być problem. Jakby ktoś mógł zerknać w w załaczeniu projekt i zrzut.

using System;
using System.Data;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.Odbc;

namespace programowanieobiektowe
{
    public partial class Form1 : Form
    {
        OdbcConnection conn = new OdbcConnection();
        public Form1()
        {
            InitializeComponent();
        }
        OdbcDataAdapter da;
        DataSet ds;
        int i;
        OdbcConnection conn = new OdbcConnection();
        private void Form1_Load(object sender, EventArgs e)
        {
            conn.ConnectionString =
            "Driver={Microsoft ODBC for Oracle};" +
            "Server= xe;" +
            "Uid= mojabaza ;" +
            "Pwd= mojabaza2012 ;";
            conn.Open();
            da = new OdbcDataAdapter("select * from SPRZEDAWCY", conn);
            OdbcCommandBuilder builder = new OdbcCommandBuilder(da);
            ds = new DataSet();
            da.Fill(ds, "SPRZEDAWCY");
            dataGridView1.DataSource = ds.Tables["SPRZEDAWCY"];
        }

        private void dataGridView1_CellContentClick_1(object sender, DataGridViewCellEventArgs e)
        {
            i = dataGridView1.SelectedCells[0].RowIndex;
            textBox1.Text = dataGridView1.Rows[i].Cells[0].Value.ToString();
            textBox2.Text = dataGridView1.Rows[i].Cells[1].Value.ToString();
            textBox3.Text = dataGridView1.Rows[i].Cells[2].Value.ToString();
            textBox4.Text = dataGridView1.Rows[i].Cells[3].Value.ToString();
            textBox5.Text = dataGridView1.Rows[i].Cells[4].Value.ToString();
        }
        private void button1_Click(object sender, EventArgs e)
        {

            ds.Tables["SPRZEDAWCY"].Rows[i]["imie"] = textBox2.Text;
            ds.Tables["SPRZEDAWCY"].Rows[i]["nazwisko"] = textBox3.Text;
            ds.Tables["SPRZEDAWCY"].Rows[i]["login"] = textBox4.Text;
            ds.Tables["SPRZEDAWCY"].Rows[i]["haslo"] = textBox5.Text;
            MessageBox.Show("Sprzedawca został zaktualizowany");
            da.Update(ds, "SPRZEDAWCY");
            ds.AcceptChanges();
            fillgrid();

        }
        public void fillgrid()
        {
            OdbcDataAdapter adapter = new OdbcDataAdapter("select * from SPRZEDAWCY", conn);
            OdbcCommandBuilder builder1 = new OdbcCommandBuilder(adapter);
            DataSet ds = new DataSet();
            adapter.Fill(ds, "SPRZEDAWCY");
            dataGridView1.DataSource = ds.Tables["SPRZEDAWCY"];
            clear();
        }
         private void btnclear_Click(object sender, EventArgs e)
        {
            clear();

        }
        private void btnDelete_Click(object sender, EventArgs e)
        {
            ds.Tables["SPRZEDAWCY"].Rows[i].Delete();
            da.Update(ds, "SPRZEDAWCY");
            ds.AcceptChanges();
            MessageBox.Show("Sprzedawca został prawidłowo usunięty");
            fillgrid();
        }
        public void clear()
        {
            textBox1.Text = "";
            textBox2.Text = "";
            textBox3.Text = "";
            textBox4.Text = "";
            textBox5.Text = "";

        }
        private void btnAdd_Click(object sender, EventArgs e)
        {
            DataRow row = ds.Tables["SPRZEDAWCY"].NewRow();
            row["imie"] = textBox2.Text;
            row["nazwisko"] = textBox3.Text;
            row["login"] = textBox4.Text;
            row["haslo"] = textBox5.Text;
            MessageBox.Show("Sprzedawca został poprawnie dodany");
            ds.Tables["SPRZEDAWCY"].Rows.Add(row);
            da.Update(ds, "SPRZEDAWCY");
            fillgrid();

        }

    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0