[ Crazy shadow @ 18.03.2008. 20:44 ] @
Radim jednu web aprlikaciju.Imam SQL bazu i u njoj tabelu u kojoj recimo imamo Broj.I recimo jedan text box i jedno dugme.
I sad mi je potrebna klasa ili sta vec kod da se konektujem u bazu.I da mogu kad unesem neki broj u text box i pritisnem dugme da se taj broj upise u bazu.
Takodje da mogu da brisem tj da mogu da koristim te podatke iz baze.Da mogu da manipulisem njima.

Hvala u napred.
[ 01011011 @ 18.03.2008. 21:43 ] @
ovo ja ne bi nikako ovako uradio ali evo ti promjer jednostavan...

forma

Code:
    <form id="form1" runat="server">
    <asp:TextBox ID="txtBroj" runat="server"></asp:TextBox>
    <asp:Button ID="btnDugme" runat="server" Text="Button" 
        onclick="btnDugme_Click" />
    </form>


onda code kad klkikens na btn

Code:

        protected void btnDugme_Click(object sender, EventArgs e)
        {
            int BROJ = Convert.ToInt32(txtBroj.Text);

            SqlConnection conn = new SqlConnection(); //(ovdje ide connection String u zagradi));

            try
            {
                conn.Open();

                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = "INSERT INTO NEKATABELA VALUES :BROJ";

                cmd.Parameters.Add(new SqlParameter(BROJ, SqlDbType.Int));
                cmd.ExecuteNonQuery();                
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if ((conn != null) && (conn.State != ConnectionState.Closed))
                    conn.Close();
            }
        }



obicno se ovo ne radi direktno, nego sa vise fajlova (lejera) znaci UI posalje info do Business layera, on uradi validacije, kalkulacije i proslijedi sve data layeru i onda on to sve zavrsi inserting u bazu podataka i tako dalje...

Cini mi se da si pocetnik cim ti je ovo bitno sto si pitao... Otidji na asp.net web stranicu, tamo ima dosta primjera, prelistaj i mnogo ce ti pomoci.

Poz


[ Crazy shadow @ 18.03.2008. 22:43 ] @
Gde gresim?


Code:
SqlConnection conn = new SqlConnection(Data Source=.\SQLEXPRESS;AttachDbFilename="D:\\Moje stvari\\ASP.Net & C#\\Vezbanja\\Komunikacija sa bazom\\App_Data\\Baza.mdf";Integrated Security=True;User Instance=True); //(ovdje ide connection String u zagradi));


Error Unexpected character '\'
[ toxi_programer @ 18.03.2008. 23:03 ] @
Fale navodnici. To je string, mora da bude "omeđen" navodnicima.
[ Crazy shadow @ 19.03.2008. 09:22 ] @
Nece ni sa navodnicima ne znam u cemu je problem.

evo pogledajte
Code:
SqlConnection conn = new SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename="D:\Moje stvari\ASP.Net & C#\Vezbanja\Komunikacija sa bazom\App_Data\Baza.mdf";Integrated Security=True;User Instance=True"); //(ovdje ide connection String u zagradi));


[ mmix @ 19.03.2008. 10:39 ] @
To je C#, \ karakter je escape karakter, ako hoces da se tretira kao \, moras da prefiksujes string sa @, ili da dupliras sve \ karaktere, svejedno:

Code:

SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename="D:\Moje stvari\ASP.Net ...itd...");

ili

SqlConnection conn = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename="D:\\Moje stvari\\ASP.Net ...itd...");
[ Crazy shadow @ 19.03.2008. 11:06 ] @
Upravo sam to uradio i opet ista prica.

Code:
SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename="D:\Moje stvari\ASP.Net & C#\Vezbanja\Komunikacija sa bazom\App_Data\Baza.mdf";Integrated Security=True;User Instance=True"); //(ovdje ide connection String u zagradi));



evo greske

D:\Moje stvari\ASP.Net & C#\Vezbanja\Komunikacija sa bazom\Default.aspx.cs(21,95): error CS1056: Unexpected character '\'
D:\Moje stvari\ASP.Net & C#\Vezbanja\Komunikacija sa bazom\Default.aspx.cs(21,107): error CS1056: Unexpected character '\'
D:\Moje stvari\ASP.Net & C#\Vezbanja\Komunikacija sa bazom\Default.aspx.cs(21,119): error CS1040: Preprocessor directives must appear as the first non-whitespace character on a line


Mislim da je neki problem ovde "& C#" tj dali ovi znakovi smeju da se koriste u Connection Stringu?
[ mmix @ 19.03.2008. 11:31 ] @
Nije,
problem je sad u znaku navoda na pocetku putanje, dakle probaj ovako, koristeci escape karaktere:

Code:

SqlConnection conn = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=\"D:\\Moje stvari\\ASP.Net & C#\\Vezbanja\\Komunikacija sa bazom\\App_Data\\Baza.mdf\";Integrated Security=True;User Instance=True");

[ Crazy shadow @ 19.03.2008. 11:59 ] @
To sam sredio ali sad imam nove probleme :D.

Imam text-box kog sam preimenovao u txtBroj i jedno dugme.
Imam tabelu koja se zove Unos.I u njoj Podatak BROJ int.

e sad


Code:

protected void btnDugme_Click(object sender, EventArgs e)
    {
        int BROJ = Convert.ToInt32(txtBroj.Text);
                                                                                    
        SqlConnection conn = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=\"D:\\Moje stvari\\ASP.Net & C#\\Vezbanja\\Komunikacija sa bazom\\App_Data\\Baza.mdf\";Integrated Security=True;User Instance=True"); //(ovdje ide connection String u zagradi));

        try
        {
            conn.Open();

            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "INSERT INTO Unos VALUES: BROJ";
        

            cmd.Parameters.Add(new SqlParameter(BROJ, SqlDbType.Int));
            cmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            if ((conn != null) && (conn.State != ConnectionState.Closed))
                conn.Close();
        }


Lepo je objasnio "01011011" ali ja ipak ne raziumem.

Gde sad gresim?

error
D:\Moje stvari\ASP.Net & C#\Vezbanja\Komunikacija sa bazom\Default.aspx.cs(21,9): error CS0246: The type or namespace name 'SqlConnection' could not be found (are you missing a using directive or an assembly reference?)
D:\Moje stvari\ASP.Net & C#\Vezbanja\Komunikacija sa bazom\Default.aspx.cs(21,34): error CS0246: The type or namespace name 'SqlConnection' could not be found (are you missing a using directive or an assembly reference?)
D:\Moje stvari\ASP.Net & C#\Vezbanja\Komunikacija sa bazom\Default.aspx.cs(27,13): error CS0246: The type or namespace name 'SqlCommand' could not be found (are you missing a using directive or an assembly reference?)
D:\Moje stvari\ASP.Net & C#\Vezbanja\Komunikacija sa bazom\Default.aspx.cs(32,36): error CS0246: The type or namespace name 'SqlParameter' could not be found (are you missing a using directive or an assembly reference?)


Evo ceo projekat.
[ toxi_programer @ 19.03.2008. 12:59 ] @
Moraš da uključiš sledeće:
System.Data;
System.Data.SqlClient; //za ovo nisam siguran da se ovako piše, proveri
[ Crazy shadow @ 19.03.2008. 13:29 ] @
System.Data; sam vec imao ukljuceno a ovo drugo sam ukljucio. i prepravio jos neke greske i mogu da pokrenem web aplikaciju.


sad kod izgleda ovako

Code:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btnDugme_Click(object sender, EventArgs e)
    {
        int BROJ = Convert.ToInt32(txtBroj.Text);
                                                                                    
        SqlConnection conn = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=\"D:\\Moje stvari\\ASP.Net & C#\\Vezbanja\\Komunikacija sa bazom\\App_Data\\Baza.mdf\";Integrated Security=True;User Instance=True"); //(ovdje ide connection String u zagradi));

        try
        {
            conn.Open();

            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "INSERT INTO Unos VALUES: BROJ";
        

            cmd.Parameters.Add(new SqlParameter(BROJ.ToString(), SqlDbType.Int));
            cmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            if ((conn != null) && (conn.State != ConnectionState.Closed))
                conn.Close();
        }
    }
}



I kad u text box ubacim broj i kliknem na dugme pojavi mi se sledeca greska

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: Incorrect syntax near ':'.

Source Error:

Line 36: catch (Exception ex)
Line 37: {
Line 38: throw ex;//ovde je greska
Line 39: }
Line 40: finally
[ toxi_programer @ 19.03.2008. 13:47 ] @
Ja bih to napisao ovako:
Code:

...
cmd.CommandText = "INSERT INTO Unos (Broj) VALUES( @Broj)";
cmd.Parameters.AddWithValue( "@Broj", BROJ);
...
[ mmix @ 19.03.2008. 13:49 ] @
Kao prvo konstrukcija:

Code:

        catch (Exception ex)
        {
            throw ex;
        }


ti ne treba ni za sta, nema potrebe da hvatas exception samo da bi ga bacio takvog kakav jeste. Finally blok ce ti se izvrsiti i bez toga.

A sto se tice tvog pitanja, greska zapravo nastaje na cmd.ExecuteNonQuery()

parametri u mssql skripti su imenovani i prefixovani sa @, plus values ide u zagrade, sql skripta treba da ti glasi:
"INSERT INTO Unos VALUES (@broj)"

onda parametar najjednostavnije dodajes sa:

Code:
cmd.Parameters.Add("@broj", BROJ);


[note: sad vidim da je Add(name, value) obsoleted, iskoristi AddWithValue kao sto je toxi naveo]
[ Crazy shadow @ 19.03.2008. 14:15 ] @
Evo ovako

Code:
 protected void btnDugme_Click(object sender, EventArgs e)
    {
        int BROJ = Convert.ToInt32(txtBroj.Text);
                                                                                    
        SqlConnection conn = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=\"D:\\Moje stvari\\ASP.Net & C#\\Vezbanja\\Komunikacija sa bazom\\App_Data\\Baza.mdf\";Integrated Security=True;User Instance=True"); //(ovdje ide connection String u zagradi));

        try
        {
            conn.Open();

            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "INSERT INTO Unos(BROJ) VALUES (@BROJ)";
            cmd.Parameters.AddWithValue("@BROJ", BROJ);
        

            cmd.Parameters.Add(new SqlParameter(BROJ.ToString(), SqlDbType.Int));
            //cmd.ExecuteNonQuery();
        }
        
        
        finally
        {
            if ((conn != null) && (conn.State != ConnectionState.Closed))
                conn.Close();
        }
    }



Nema gresaka pokrenem aplikaciju unesem broj u textBox ali mi se ne puni baza.Gde gresim?

Zasto?
[ toxi_programer @ 19.03.2008. 14:48 ] @
Brate treba malo da odspavaš, nemaš koncentraciju uopšte
Pa stavio si ovo pod komentar:
//cmd.ExecuteNonQuery();

A i izbaci liniju:
cmd.Parameters.Add(new SqlParameter(BROJ.ToString(), SqlDbType.Int));
jer si to uradio već sa linijom:
cmd.Parameters.AddWithValue("@BROJ", BROJ);
[ Crazy shadow @ 19.03.2008. 15:01 ] @
Uh konacno proradelo.Ubi se za dva reda koda :D:D.

E sad recimo da uzmem sad neki broj iz baze i da ga saberem sa bilo kojim.
I kako recimo da obrisem broj iz baze?
[ toxi_programer @ 19.03.2008. 15:15 ] @
Trebalo bi da tvoja baza ima više kolona. Na primer, kolona "BrojId" koja će biti tipa AutoNumber i koja će biti primarni ključ za tu tabelu( primarni ključ znači da svaki red mora imati unikatnu, drugačiju vrednost za tu kolonu, pa na osnovu njega možeš da identifikuješ svaki red posebno).

Al' ako hoćeš da obrišeš npr. sve redove kojima je BROJ = 5 možeš ovako da napišeš SQL komandu:
Code:

DELETE FROM MojaTabela WHERE BROJ = 5


Sve te komande su već objašnjene, evo recimo ovde: http://www.w3schools.com/sql/default.asp

Enjoy
[ pl4stik @ 19.03.2008. 17:33 ] @


http://aspnet.4guysfromrolla.com/articles/050207-1.aspx
[ Crazy shadow @ 21.03.2008. 10:44 ] @
Evo mene opet.:D Radim registraciju i pri unosu podataka imam problem nemogu da ga resim ubi se.
Imam bazu Clanovi i tablu Podaci i u njo promenjive IDClana,KorisnickoIme,Sifra,Sajt.

Kompajler ne prikazuje greske ali pri unosu podataka u text boxove i klikom na dugme koj vrsi unos u bazu javlja se problem..

Code:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class Registracija : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void RegistracijaButton_Click(object sender, EventArgs e)
    {
        string korisnickoIme = KorisnickoImeTextBox.Text;
        string sifra = LozinkaTextBox.Text;
        string Email = EmailTextBox.Text;
        string sajt = SajtTextbox.Text;
       
        SqlConnection conn=new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=\"D:\\Moje stvari\\ASP.Net & C#\\Vezbanja\\Registracija i logovanje\\App_Data\\Clanovi.mdf\";Integrated Security=True;User Instance=True");
        try
        {
            
            conn.Open();
            //pravimo promenjivu za unos u bazu
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandType = CommandType.Text;
            
            cmd.CommandText = "INSERT INTO Podaci(KorisnickoIme,Sifra,EmailAdresa,Sajt) VALUES (@korisnickoIme,@sifra,@Email,@sajt)";
            
            cmd.Parameters.AddWithValue("@KorisnickoIme", korisnickoIme);
            cmd.Parameters.AddWithValue("@Sifra", sifra);
            cmd.Parameters.AddWithValue("@EmailAdresa", Email);
            cmd.Parameters.AddWithValue("@Sajt", sajt);
            //zaustavljamo ubacivanje
            cmd.ExecuteNonQuery();
        }
        
        finally
        {
            if ((conn != null) && (conn.State != ConnectionState.Closed))
                conn.Close();

        }
        
    }
}


Eror je : Must declare the scalar variable "@Email".
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: Must declare the scalar variable "@Email".

i ukazuje na kod
Code:
Line 39:             cmd.Parameters.AddWithValue("@Sajt", sajt);
Line 40:             //zaustavljamo ubacivanje
Line 41:             cmd.ExecuteNonQuery();
Line 42:         }


Source File: d:\Moje stvari\ASP.Net & C#\Vezbanja\Registracija i logovanje\Registracija.aspx.cs Line: 41
[ 01011011 @ 21.03.2008. 14:40 ] @
Sledeci put daj delu error poruku, ali mislim da ti je problem kod

Code:
(@korisnickoIme,@sifra,@Email,@sajt)";


zato sto C# je case sensitive, moras ako si dole napisao korisnicko ime , sifru i sajt sa pocetnim velikim slovom, mroas tako i ovde da uradis.

Code:
(@KorisnickoIme,@Sifra,@Email,@Sajt)";


Poz
[ toxi_programer @ 21.03.2008. 16:12 ] @
Nije stvar u tome, promašio je celu reč.
Piše:
Code:

cmd.Parameters.AddWithValue("@EmailAdresa", Email);


A u INSERT INTO stoji:
Code:

VALUES (@korisnickoIme,@sifra,@Email,@sajt)";


Mora na oba mesta isto da bude, ti si na prvom stavio @EmailAdresa a na drugom @Email...