Avatar billede ashansen Nybegynder
05. oktober 2006 - 11:10 Der er 31 kommentarer

Kan ikke slette fra db

Hej

Jeg er ved at lave en metode som skal kunne slettet fra en database.
Jeg får fejl i min sql sætning "near *"....

Min kode er

          string strSQL = "DELETE * FROM users WHERE id=2";
            SqlConnection myConnection = new SqlConnection(connectionString);
            SqlCommand myCommand = new SqlCommand(strSQL, myConnection);
            myCommand.Connection.Open();
            myCommand.ExecuteNonQuery();
            myConnection.Close();

Kan i se hvorfor?
Avatar billede c-sharp Nybegynder
05. oktober 2006 - 11:18 #1
Din sql streng skal være "DELETE FROM user WHERE id = 2"
Avatar billede ashansen Nybegynder
05. oktober 2006 - 11:30 #2
ja det er klart :D

men posten med id 2 bliver ikke slettet..
Avatar billede c-sharp Nybegynder
05. oktober 2006 - 11:37 #3
hvis du retter din sql skulle du ikke gerne få fejlen du hentyder til?
Avatar billede ashansen Nybegynder
05. oktober 2006 - 11:39 #4
det rettede også fejlen, men posten i databasen slettes ikke
Avatar billede ashansen Nybegynder
05. oktober 2006 - 11:40 #5
og der kommer ikke nogen fejlmeddelelse
Avatar billede c-sharp Nybegynder
05. oktober 2006 - 11:59 #6
Det skal virke!
Jeg har lige testet din kode og den virker fint her.
Avatar billede ashansen Nybegynder
05. oktober 2006 - 12:01 #7
bruger jeg følgende sql sætning meldes der også fejl..

"INSERT INTO users (username, password) VALUES(nytnavn, nytpass)"
Avatar billede ashansen Nybegynder
05. oktober 2006 - 12:05 #8
kan det have noget at gøre med at jeg udskriver alt indholder at tabellen til et dataset?
Avatar billede ashansen Nybegynder
05. oktober 2006 - 12:08 #9
sletter jeg manuelt posten i db melder den heller ingen fejl...
Avatar billede ashansen Nybegynder
05. oktober 2006 - 12:21 #10
jeg har ændret min kode lidt, den ser således ud nu:

            string strSQL = "DELETE FROM users WHERE id=3";
            //string strSQL = "INSERT INTO users (username, password) VALUES(nytnavn, nytpass)";
            SqlConnection myConnection = new SqlConnection(connectionString);
            SqlCommand myCommand = new SqlCommand(strSQL, myConnection);
            myConnection.Open();
            myCommand.ExecuteNonQuery();  //myCommand.Connection.Open();
            myConnection.Close();

s//
Avatar billede ashansen Nybegynder
05. oktober 2006 - 12:21 #11
hov

myCommand.ExecuteNonQuery();  //myCommand.Connection.Open();
viser min ændring, men den betyder ikke noget, jeg mener bare det bør være sådan.
Avatar billede c-sharp Nybegynder
05. oktober 2006 - 12:43 #12
Har kontrolleret i selve databasen om den er væk?
Avatar billede ashansen Nybegynder
05. oktober 2006 - 12:45 #13
ja, og det er det ikke... desværre
bruger ms sql 2005 express

hvad siger du til min ændring?
Avatar billede c-sharp Nybegynder
05. oktober 2006 - 12:57 #14
Som jeg ser det er det ikke din kode der fejler noget (den første kode du har posted)
for den har jeg kørt mod min database uden problemer. Og hvis heller ingen fejl du får lyder det lidt mærkeligt. Du er sikker på at du har "snablen" nede i den rigtige DB?
Avatar billede ashansen Nybegynder
05. oktober 2006 - 13:08 #15
ja, for den kan jeg læse fra

men når jeg udlæser fra db læser jeg udtrækket over i et dataset.
kan det have nogen indflydelse (jeg ser ikke nogen...)?
Avatar billede c-sharp Nybegynder
05. oktober 2006 - 13:18 #16
Nej det har ikke noget at sige at du henter dine data over i et dataset, det skulle kun være hvis ikke du får opdateret dit dataset efter du har slettet posten i DB.
Avatar billede ashansen Nybegynder
05. oktober 2006 - 13:50 #17
jeg har indtil nu brugt en autogenereret database... elelr hvad det nu kaldet.

jeg har nu oprettet en database i sql express (der troede jeg også den anden lå, men det gjorde den ikke).
nu er mit problem at det kniber med at connecte.
kan denne connectionstring bruges?

<add name="ConString" connectionString="Server=Server=MINPC\SQLEXPRESS;Database=DB-Test;Trusted_Connection=True;" />
Avatar billede c-sharp Nybegynder
05. oktober 2006 - 14:20 #18
Du kan connecte til databasen fra VS under Database Explorer
Avatar billede ashansen Nybegynder
05. oktober 2006 - 14:40 #19
jeg venter lidt med den server så

så jeg reformulerer lige, jeg bruge den mdf database som er oprettet af VS.
Er det et problem?

Når du har testet er det så på en mdf db som er oprettet af VS eller en db i sql express?
Avatar billede c-sharp Nybegynder
05. oktober 2006 - 14:56 #20
Jeg har testet det på en hosted Ms-sql 2000 hvor jeg har oprettet tabellerne direkte på datadatabasen. Men det burde nu være lige meget.

Nej du burde snildt kunne bruge den MS-SQL 2005 ekspress som installeres sammen med VS
Avatar billede ashansen Nybegynder
05. oktober 2006 - 18:46 #21
ok nu virker det

det skulle være

          string strSQL = "DELETE * FROM users WHERE id=2";
            SqlConnection myConnection = new SqlConnection(connectionString);
           
            //de her to skulle btttes rundt :D
            myCommand.Connection.Open();           
            SqlCommand myCommand = new SqlCommand(strSQL, myConnection);
           
            myCommand.ExecuteNonQuery();
            myConnection.Close();

læg bare et svar, og tak for hjælpen :D
Avatar billede c-sharp Nybegynder
05. oktober 2006 - 19:53 #22
Det var godt du fik det til at virke :-)
Avatar billede ashansen Nybegynder
06. oktober 2006 - 08:35 #23
lige et sidste spørgsmål.

Nu sletter den i databasen..... tror jeg.
den sletter en post med ovenstående (det kan jeg se inden mit program afsluttes), men når programmet afsluttes, så er ændringen i databasen ikke at finde....

Ved du hvad det kan være?
Avatar billede c-sharp Nybegynder
06. oktober 2006 - 09:00 #24
Hej igen :-)

Hvad sker der i din database inden du lukker din applikation (hvis du kigger direkte i databasen)?
Avatar billede ashansen Nybegynder
06. oktober 2006 - 10:34 #25
faktisk ingen ting...

Er det´noget med at det hele ligger i ram'en og skal skrives til db eller noget?
Avatar billede c-sharp Nybegynder
06. oktober 2006 - 11:13 #26
Dit DataSet ligger i hukommelsen, men når du udføre myCommand.ExecuteNonQuery() sker det med det samme i databsen, med mindre du får en exception.
Avatar billede ashansen Nybegynder
06. oktober 2006 - 11:51 #27
jeg får ingen exception

har lavet følgende for at se om der kommer en

            try
            {

                //string strSQL = "DELETE FROM users WHERE id=3";
                string strSQL = "INSERT INTO users (username, password) VALUES('henrik', 'hansen')";

                SqlConnection myConnection = new SqlConnection(connectionString);
               
                SqlCommand myCommand = new SqlCommand(strSQL, myConnection);
                myConnection.Open();
               
                myCommand.ExecuteNonQuery();
                myConnection.Close();
            }
            catch (SqlException e)
            {
                MessageBox.Show(e.ToString());
               
            }
Avatar billede c-sharp Nybegynder
06. oktober 2006 - 12:04 #28
Dvs. at der intet sker nogen steder når du fyre det ovenstående af?
Avatar billede ashansen Nybegynder
06. oktober 2006 - 12:23 #29
altså, det er korrekt, at der ikke sker noget i databasen (nå man kigger direkte ned i den.).

Men hvis jeg inden programmet slutter udlæser fra databasen og kommer dette over i en variabel af typen dataset, så kan jeg godt se den nye post...
Avatar billede c-sharp Nybegynder
06. oktober 2006 - 14:03 #30
Det lyder lidt mystisk...
kan du ikke prøve at poste den kode hvor med du fylder dit dataset,
Avatar billede ashansen Nybegynder
10. oktober 2006 - 20:25 #31
Hej igen :D

Hermed min metode som fylder mig recordset

        private DataSet FillDataSet(SqlCommand dbCommand, string QueryName)
        {

            SqlConnection connection = new SqlConnection(connectionString);
            dbCommand.Connection = connection;
            SqlDataAdapter adapter = new SqlDataAdapter(dbCommand);

            DataSet sqlDataSet = new DataSet();
            try
            {
                connection.Open();
                adapter.Fill(sqlDataSet, QueryName);
            }

            catch (Exception e)
            {
                MessageBox.Show("Fejl i SQL forespørgsel!! \n\n\n" + e);
            }

            finally
            { connection.Close(); }

            return sqlDataSet;
        }
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester