Forum » Programiranje » C# INSERT statment ne vpise podatkov
C# INSERT statment ne vpise podatkov
b00mer ::
Pozdravljeni
Naj prvo povem, da sem nov v c# Windows Forms.
Imam aplikacijo za racunanje obveznic. Podatke preberem iz tabele, izracune vpisem v gridview in jih potem iz grdiviewa poberem.
Ko bi jih rad vpisal v drugo tabelo se ne zgodi 0.
Poskusil sem vnesti tudi preko parametrov, vendar brez uspeha.
V ta namen sem naredil Console app, kjer testiram simple vnos, ne dela..
Nekje sem zasledil, da connection string ni pravilen oz. nej bi insert "mesal" podatkovno bazo..
Kako oz kje se spremeni conn string v Data Source=.\SQLEXPRESS;Database=Database1;Integrated Security=True ?
Hvala lp
Naj prvo povem, da sem nov v c# Windows Forms.
Imam aplikacijo za racunanje obveznic. Podatke preberem iz tabele, izracune vpisem v gridview in jih potem iz grdiviewa poberem.
Ko bi jih rad vpisal v drugo tabelo se ne zgodi 0.
Poskusil sem vnesti tudi preko parametrov, vendar brez uspeha.
int amorplanid = 0; int idn = 0; DateTime datum; double interest = 0; double principal = 0; double payment = 0; double newprincipal = 0; string nizz = ""; string[] niz= new string[7]; for (int x = 0; x < dataGridView1.Rows.Count-1; x++) { for (int j = 0; j < dataGridView1.Rows[x].Cells.Count; j++) { nizz += dataGridView1.Rows[x].Cells[j].Value.ToString()+"."; } niz = nizz.Split('.'); amorplanid = System.Convert.ToInt32(niz[0]); idn = System.Convert.ToInt32(niz[1]); // datum = System.Convert.ToDateTime(niz[2]); datum = DateTime.Now; interest = System.Convert.ToDouble(niz[3]); principal = System.Convert.ToDouble(niz[4]); payment = System.Convert.ToDouble(niz[5]); newprincipal = System.Convert.ToDouble(niz[6]); String insert = @"INSERT INTO AmortPlanCoupT(ID, AmortPlanID, CoupDate, Interest, Principal, Payxment, NewPrincipal) VALUES (" + idn + "," + amorplanid + "," + datum + "," + (float)interest + "," + (float)principal + "," + (float)payment + "," + (float)newprincipal + ")"; SqlConnection myconn = new SqlConnection(conn); // String MyString = @"INSERT INTO Employee(ID, FirstName, LastName) VALUES(2, 'G', 'M')"; try { myconn.Open(); SqlCommand cmd = new SqlCommand(insert, myconn); cmd.ExecuteNonQuery(); myconn.Close(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); }
V ta namen sem naredil Console app, kjer testiram simple vnos, ne dela..
SqlConnection MyConnection = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\App_Data\Database1.mdf;Integrated Security=True;User Instance=True"); try { MyConnection.Open(); String MyString = @"INSERT INTO test(id, leto) VALUES(2, 2)"; SqlCommand MyCmd = new SqlCommand(MyString, MyConnection); MyCmd.ExecuteNonQuery(); MyConnection.Close(); } catch (Exception e) { Console.WriteLine(e.ToString()); } }
Nekje sem zasledil, da connection string ni pravilen oz. nej bi insert "mesal" podatkovno bazo..
Kako oz kje se spremeni conn string v Data Source=.\SQLEXPRESS;Database=Database1;Integrated Security=True ?
Hvala lp
KernelPanic ::
Daj probaj sql stavek pognati direktno na serverju, da ni kaksnih syntax errors. Jaz bi to prvo preveril.
jamiroq ::
mogoče en nasvetič glede sql query stringov v c#:
namesto konkatenacije
delaj raje takole
se mi zdi, da je tako vse skupaj malo bolj pregledno...
namesto konkatenacije
String insert = @"INSERT INTO AmortPlanCoupT(ID, AmortPlanID, CoupDate, Interest, Principal, Payxment, NewPrincipal) VALUES (" + idn + "," + amorplanid + "," + datum + "," + (float)interest + "," + (float)principal + "," + (float)payment + "," + (float)newprincipal + ")";
delaj raje takole
SqlConnection conn = new SqlConnection("asdf, fdsa"); SqlCommand cmd = new SqlCommand("INSERT INTO AmortPlanCoupT(ID, AmortPlanID, CoupDate, Interest, Principal, Payxment, NewPrincipal) VALUES (@idn, @amorplanid, @datum, @interest, @principal, @payment, @newprincipal)", conn); //namesto .text lahko izberes tudi CommandType.StoredProcedure; namesto sql inserta zgoraj le vpises ime stored procedure cmd.CommandType = CommandType.Text; //spodaj so tvoje vrednosti, ki si vstavljal v sql insert s konkatenacijo stringov cmd.Parameters.AddWithValue("@idn", idn); cmd.Parameters.AddWithValue("@amorplanid", amorplanid); cmd.Parameters.AddWithValue("@datum", datum); cmd.Parameters.AddWithValue("@interest", (float)interest); cmd.Parameters.AddWithValue("@principal", (float)principal); cmd.Parameters.AddWithValue("@payment", (float)payment); cmd.Parameters.AddWithValue("@newprincipal", (float)newprincipal);
se mi zdi, da je tako vse skupaj malo bolj pregledno...
b00mer ::
b00mer ::
Sem popravil, vendar brez uspeha...
Enostavno mi je ze mal zmanjkalo idej..V query builderju lahko lepo insertam, programsko je pa....:\
Enostavno mi je ze mal zmanjkalo idej..V query builderju lahko lepo insertam, programsko je pa....:\
Looooooka ::
Popravil kako in kje.Plus vklopi si exceptionev.Ce se nic ne zapise potem definitivno ne gre cez brez exceptiona.
Razen ce mas magicno 2 instanci sql serverja z 2 bazama in kasneje preverjas napacno :)
Razen ce mas magicno 2 instanci sql serverja z 2 bazama in kasneje preverjas napacno :)
darkolord ::
Ko izvedeš ExecuteNonQuery(), ti metoda vrne število vnesenih vrstic. Koliko ti vrne?
Preveri še, če nimaš nastavljeno, da ti datoteko z bazo ob vsakem kompajlu prepiše - to je precej pogosta napaka.
Preveri še, če nimaš nastavljeno, da ti datoteko z bazo ob vsakem kompajlu prepiše - to je precej pogosta napaka.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | SQL problemOddelek: Programiranje | 1686 (1304) | win64 |
» | [Visual C#] TableAdapterOddelek: Programiranje | 1133 (1009) | detroit |
» | Statistika dijakov, pomocOddelek: Programiranje | 1780 (1264) | Mitja Bonča |
» | [C#] Dostop do objekta iz različnih formOddelek: Programiranje | 2163 (1876) | Kekec |
» | [C#] Query in codeOddelek: Programiranje | 1819 (1563) | iggy1 |