» »

[C#] Query in code

[C#] Query in code

iggy1 ::

Imam recimo en textBox in bi rad ko kliknem OK, da se to kar je bilo vpisano v textBox shrani v podatkovno bazo.Recimo podatkovna baza je imenik povezavo že imam do baze sam kako se query napiše v C#?

darkolord ::

Približno tako (če imaš že narejeno povezavo)

SqlCommand sc = new SqlCommand("INSERT INTO tabela VALUES (@vrednost)", povezava);
sc.Parameters.AddWithValue("@vrednost", TextBox1.Text);
povezava.Open();
sc.ExecuteNonQuery();
povezava.Close();

iggy1 ::

Najlepša hvala za odgovor!


Lp,
Igor

iggy1 ::

string connectionString = GetConnectionString();
using (SqlConnection connection = new SqlConnection(connectionString))

SqlCommand sc = new SqlCommand("INSERT INTO imenik VALUES (@vrednost)", connection);
sc.Parameters.AddWithValue("@vrednost", textBox1.Text);
connection.Open();
sc.ExecuteNonQuery();
connection.Close();

Pri tej kodi mi vrže pri vsrtici SqlCommand error " embedded statement cannot be a declaration or labeled statement". A mi kdo zna povedati kaj bi lahko bilo narobe?


Lp,
Igor

darkolord ::

Kaj maš tist using tam? Ven ga vrž pa bo

iggy1 ::

Ok to vrstico using sem dal ven pol mi a butne ene 5 errorjev:
The name GetConnectionString does not exist in the current context
The type or namespace name SqlCommand could not be found(are you missing a using directive or an a assemly reference?)
string does not contain a definiton for Open
string does not contain a definiton for Close

darkolord ::

na vrhu modula dodaj

using System.Data.SqlClient;


pa ne daš tiste vrstice cele ven ampak samo using, tako da pride:

SqlConnection connection = new SqlConnection(connectionString);


Kje imaš metodo GetConnectionString() definirano?

iggy1 ::

Bravo vidiš nimam je sploh definirane. Kako in kje jo definiram?

darkolord ::

Iz kje si to sploh pobral? :)

Načeloma lahko connection string nastaviš kar direkt za tvojo bazo..

iggy1 ::

static private string GetConnectionString()
{
return "Data Source=(local);Initial Catalog=AdventureWorks;"
+ "Integrated Security=SSPI;";
}

A to postavim pod to prejšno kodo?

iggy1 ::

Ja kako bi recimo v mojem primeru rešil da bi vsebino textBoxa zapisal v tabelo imenik, ki vsebuje stolpce Ime Priimek Dejavnost v drugi tabeli pa Številka GSM1 GSM2 E-mail?

iggy1 ::

SqlCommand sc = new SqlCommand("INSERT INTO tabela VALUES (@vrednost)", povezava);
sc.Parameters.AddWithValue("@vrednost", TextBox1.Text);
povezava.Open();
sc.ExecuteNonQuery();
povezava.Close();

kaj bi moral vstaviti tukaj namesto besede povezava. A mogoče connectionString?

iggy1 ::

Mi zna kdo drug svetovati kako bi to lahko rešil?

iggy1 ::

Ok uspel sem vzzpostaviti povezavo dodal en label da mi pove če je bila vstrica shranjena in mi vse lepo pokaže, da je bila. Samo ko pa grem gledat v podatkovno bazo je pa ta še zmeraj prazna. Ima kdo idejo zakaj?

Tole je pa koda:

SqlConnection connection = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\imenik.mdf;Integrated Security=True;User Instance=True");
SqlCommand sc = new SqlCommand("INSERT Stiki (Priimek, Ime, Dejavnost) VALUES (@priimek, @ime, @dejavnost)", connection);
sc.Parameters.AddWithValue("@priimek", textBox1.Text);
sc.Parameters.AddWithValue("@ime", textBox2.Text);
sc.Parameters.AddWithValue("@dejavnost", comboBox1.Text);
connection.Open();
Int32 rowsAffected = sc.ExecuteNonQuery();
affected.Text = rowsAffected.ToString();
connection.Close();

Lp,
Igor

darkolord ::

Mimogrede, sql stavek je INSERT INTO...

Drugače pa, poglej če nimaš pri fajlu od baze označeno, da ti fajl skopira v output mapo vsakič ko program skompajlaš

iggy1 ::

Evo spremenjena koda :
SqlConnection connection = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\imenik.mdf;Integrated Security=True;User Instance=True");
SqlCommand sc1 = new SqlCommand("INSERT INTO Stiki VALUES (@priimek, @ime, @dejavnost)", connection);
sc1.Parameters.AddWithValue("@priimek", textBox1.Text);
sc1.Parameters.AddWithValue("@ime", textBox2.Text);
sc1.Parameters.AddWithValue("@dejavnost", comboBox1.Text);
SqlCommand sc2 = new SqlCommand("INSERT INTO Stevilka VALUES (@stevilka, @gsm1, @gsm2, @e-mail)", connection);
sc2.Parameters.AddWithValue("@stevilka", textBox3.Text);
sc2.Parameters.AddWithValue("@gsm1", textBox4.Text);
sc2.Parameters.AddWithValue("@gsm2", textBox5.Text);
sc2.Parameters.AddWithValue("@e-mail", textBox6.Text);
connection.Open();
Int32 rowsAffected = sc1.ExecuteNonQuery();
affected.Text = rowsAffected.ToString();
connection.Close();

Lej če dam tm never copy mi pa da error. A kej veš zakaj? Kaj naj naredim da vidim v podatkovni bazi recorde?

iggy1 ::

Če grem pa sam dajat record noter mi da pa ID 1 tako da sploh ne verjamem da shrani v podatkovno bazo. How strange is that?

Nevem zakaj mi označi kakor, da je izvedel stavek, če ga ni.

iggy1 ::

darkolod a mora biti označeno ali ne?

darkolord ::

"Copy to Output Directory" nastavi na "Do not copy" (in prvič na roko skopiraj bazo tja)

iggy1 ::

Kaj naj pa kopiram če nič ni noter?

darkolord ::

Ja kje pa imaš bazo?

iggy1 ::

Bazo imam tukaj:

C:\DOCUMENTS AND SETTINGS\IGOR\MY DOCUMENTS\VISUAL STUDIO 2005\PROJECTS\IMENIK\IMENIK\IMENIK.MDF

darkolord ::

Kaj naj pa kopiram če nič ni noter?

No potem si si že sam odgovoril... imenik.mdf skopiraj tja kjer je exe fajl

iggy1 ::

Naredil pa še kr nič. K grem gledat z sql server manager ni v imeniku niti enega recorda. Nevem več kaj naj naredim.

iggy1 ::

Darkolord a misliš da je problem v kodi, ker jaz nevem več kaj bi lahko bilo. Probal sem že mali milijon možnosti. Gledal sem tudi ta forum:
[C#] Spremembe podatkov se ne shranijo v podatkovno bazo
pa ni nič pomagalo.

darkolord ::

Če izključim to, da v zgornji kodi poženeš samo sc1 in ne tudi sc2, izgleda vse v redu. Dej v connectionstring celotno pot do baze pa boš pol vidu, če res ne daja notri...

iggy1 ::

A to misliš v connectionstring v app.config a samo v moji kodi?

A ti lahko pošljem kodo pa ti mal sprobavaš kaj bi lahko bilo?


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

SQL problem

Oddelek: Programiranje
141684 (1302) win64
»

C# INSERT statment ne vpise podatkov

Oddelek: Programiranje
111202 (1076) darkolord
»

Napaka pri povezavi z bazo - c#

Oddelek: Programiranje
71003 (867) Mitja Bonča
»

[Visual C#] TableAdapter

Oddelek: Programiranje
61127 (1003) detroit
»

[C#] Dostop do objekta iz različnih form

Oddelek: Programiranje
182160 (1873) Kekec

Več podobnih tem