Dodanie rekordu do bazy mssql

0
 
string sql = "INSERT into Pojazdy (Spalanie, Opis, Nazwa) VALUES ('" + comboBox1.Text + "','" + textBox2.Text + "','" + textBox1.Text + "')";

            baza dodaj = new baza(sql);
            dodaj.add_car();

 public class baza
    {
        public SqlDataAdapter da;
        private string sql;

        public baza(string sql = "")
        {
            this.sql = sql;
        }

        public void add_car()
        {
            da = new SqlDataAdapter(sql, Form1.con);
        }

W form1:

 

using System.Data.Sql;
using System.Data.SqlClient;

static public System.Data.SqlClient.SqlConnection con;

        private void Form1_Load(object sender, EventArgs e)
        {
            con = new SqlConnection();
            con.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=c:\\Database1.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";

            con.Open();
        }

Zastanawiam się co źle zrobiłem... czy czegoś mi brakuje ???

1

Zastanawiam się, jaki może być twój błąd...

0

Ale opisz bardziej swój problem - czy program się wykonuje a nic się nie dodaje, czy się gdzieś wywala...

ed. Masz tylko konstruktor SQLDataAdapter, a nigdzie nie wywołujesz zapytania. Do tego typu zapytań polecam używanie:
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.aspx
tylko, że zaraz po wykonaniu zapytania zamykasz readera.

0

właśnie żadne rekordy się nie dodają...

0

po 1. Jak już masz jakąś klasę , która ci ładnie enkapsuluje operację. To w metodzie add_car() nie wykorzystuj statycznego obiektu Form1.conn . Injectuj ten obiekt w metodzie jako parametr.
po 2. Nie widzimy momentu , w którym inicjalizujesz klasę baza X: ? Kod z zapytaniem w jaki sposób jest wywoływany ?
po 3. Jeżeli analizuje dobrze to co nam pokazałeś to otwierasz połączenia przy ładowaniu Formatki by później z niego korzystać w jakiejś metodzie. Z tego powodu zakładam , że chyba nie zamykasz połączenia. Oj nieładnie. Zasada jest taka. Otwierasz połączenie , wykonujesz operację , zamykasz połączenie wszystko w jednej metodzie. Jeżeli tak nie zrobisz to w twoim kodzie będzie działa się magia. Kod będzie ciężki w utrzymaniu i podatni na bugi.

0

Po co ci ten adapter???
Konstruktor adaptera (ten którego użyłeś) jako pierwszy parametr przyjmuje zapytanie sql select!!! a nie dowolne (np. insert)
Użycie adaptera w tym scenariuszu to troche strzelanie z armaty, a chociaż z dubeltówki, do komara.
Użyć SqlCommand i metody ExecuteNonQuery

aaaaa! i nie klej zapytań ze stringów, a w szczególności pochodzących od usera! sql injection - przeczytaj

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