Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Problem med SQL och SELECT @@identity

Postades av 2008-03-03 09:36:50 - Benni Svensson, i forum asp.net generellt, Tråden har 9 Kommentarer och lästs av 1328 personer

Jag har klarat detta tidigare, men sen fick jag en krach, och allt är försvunnit...

<code>
sql = @"INSERT INTO t_kontakt (Foretag,Namn,Adress,Ort,Epost)" +
"VALUES('" + sForetag + "','" + sNamn + "','" + sAddres + "','" +
sOrt + "','" + sEpost + "'); SELECT @@identity ;";
</code>
Den såg alltså ungefär ut så här och fungerade kanon.

Error:
"Tecken efter slutet av SQL-uttryck."
flyttar jag semikolon till venster om parentesen
"Syntaxfel i frågeuttrycket ''benni@saw.se';'."
tar jag bort semikolon
"Semikolon saknas i slutet av SQL-uttryck."
Jag har jagat runt här och på andra forum samt internet men jag har inte
hittat någon lösning.
Tacksam för hjälp.


Svara

Sv: Problem med SQL och SELECT @@identity; Vilken db-hanterare?

Postades av 2008-03-03 10:23:11 - Jon Wiberg

Vilken databashanterare försöker du göra det mot?
- en möjlig orsak; då access inte klarar multipla frågor särskilt bra. (multiple resultset)


Testa att få din SQL sträng så som din applikation ser den.
Dvs skriv ut den, eller Visual studio debug-läge och visualiser.

Jag ser en ev. möjlighet i att du inte har ngt mellanslag mellan kolumnnamnen och VALUES
-->
(Foretag,Namn,Adress,Ort,Epost)VALUES


Ett tips för att slippa konkatenera ihop SQL allmänt för .net är att använda tex string.format
Ex nedan:

<code>
sql = String.Format("INSERT INTO t_kontakt (Foretag,Namn,Adress,Ort,Epost) VALUES ('{0}','{1}','{2}','{3}','{4}'); SELECT @@identity ;", sForetag, sNamn, sAddres, sOrt, sEpost);
</code>

Ett annat tips är att du använder parametrar för att minimera risken för SQL-injections.

// Lycka till :)


Svara

Sv:Problem med SQL och SELECT @@identity; Vilken db-hanterare?

Postades av 2008-03-03 11:55:34 - Benni Svensson

Hej Jon.
Ursäkta jag glömde säga att det rör sig om Access. SQL-injections har jag redan tagit hand om.

Jag har/brukar alltid skriva ut sqlen med Response.Write och det ser helt ok ut.
Jag skall undersöka det med mellanslaget.
Din string.Format ser ju onekligen väldigt intressant ut, jag skall försöka med den.
När det gäller Access och multipla frågor så har jag i en annan applikation lyckats med en väldigt
inveklad fråga (där en silect innehåller tre andra select).


Svara

Sv: Problem med SQL och SELECT @@identity; Vilken db-hanterare?

Postades av 2008-03-03 13:18:55 - Johan Djupmarker

Access klarar inte av flera frågor i samma anrop, det du gjort tidigare är troligtvis sub-select och det är en annan sak. Du får köra din INSERT först och sedan en ny SELECT.

/Johan


Svara

Sv:Problem med SQL och SELECT @@identity; Har fungerat tidigare

Postades av 2008-03-03 18:17:34 - Benni Svensson

Jon Wiberg tyvärr så blev det samma error.
Det som är så frusterande är att det har lyckats tidigare.


Svara

Sv: Problem med SQL och SELECT @@identity; Har fungerat tidigare

Postades av 2008-03-03 19:09:30 - Benni Svensson

Jag får tydligen överge min tanke men jag behöver likväl lite hjälp här.
Databasen har två tabeller t_kontakt(för namn epost osv) och en t_kontaktExst(för varje anrop ifrån
kunden, som medelande osv)

Min tanke är då, när en kund har fyllt i formuläret och skickat, så skall det kollas om det är en ny kund
eller en gammal kund.
Vid ny kund så fylls bägge tabbelerna i, vid gammal kund så tar man fran kundens id genom namn
och epost. Kunden kan alltså fylla i hur många gånger som helst, och allt hamnar i t_kontaktExst.
Men jag tänker galet någonstans för även vid en "ny" kund så påstår scriptet att den har hittat kunden(id=1).

(just nu så finns ingenting registrerat i dessa bägge tabeler.

<code>
int iId = 0;

sql="SELECT Id FROM t_kontakt WHERE Namn ='" +sNamn+ "' AND Epost ='" +sEpost+ "'";
DataTable dt = Webbutill.fillDataTable(DBConn, sql);
if (dt.Rows.Count > 0)
{
DataRow row = dt.Rows[0];
iId = Convert.ToInt32(row["Id"]);
}
if(iId >0)
{

sql = String.Format("INSERT INTO t_kontaktExst (KonID,Datum,Kontakttyp,Lang,Medelande)
VALUES ('{0}','{1}','{2}','{3}','{4}');", iId, dDate, sKontakttyp, sLang, sMeddelande);
Webbutill.executeSQL(sql, DBConn);
DBConn.Close();
LStatus.Text = sql;
}
else
{
sql = String.Format("INSERT INTO t_kontakt (Foretag,Namn,Adress,Ort,Epost) VALUES
('{0}','{1}','{2}','{3}','{4}');", sForetag, sNamn, sAddres, sOrt, sEpost);
LStatus.Text = sql;
Webbutill.executeSQL(sql, DBConn);

sql = "SELECT Id FROM t_kontakt WHERE Namn ='" + sNamn + "' AND Epost ='" + sEpost + "'";
dt = Webbutill.fillDataTable(DBConn, sql);
if (dt.Rows.Count > 0)
{
DataRow row = dt.Rows[0];
int iId = Convert.ToInt32(row["Id"]);

sql = String.Format("INSERT INTO t_kontaktExst (KonID,Datum,Kontakttyp,Lang,Medelande)
VALUES ('{0}','{1}','{2}','{3}','{4}');", iId, dDate, sKontakttyp, sLang, sMeddelande);

Webbutill.executeSQL(sql, DBConn);
}
}
</code>
Tacksam för förbättrande/förenklande förslag.


Svara

Sv:Problem med SQL och SELECT @@identity; Har fungerat tidigare

Postades av 2008-03-03 22:08:40 - Johan Djupmarker

Vad skrivs till databasen när det "blir fel"?

/Johan


Svara

Sv: Problem med SQL och SELECT @@identity; Har fungerat tidigare

Postades av 2008-03-04 10:01:14 - Benni Svensson

Den skrev ingenting, sen blev jag förb-ad tog bort allt och började om igen och då fungerade det.
En fråga till:
När man skriver:
<code>
"INSERT INTO t_kontaktExst (KonID,Datum,Kontakttyp,Lang,Medelande)
VALUES ('{0}','{1}','{2}','{3}','{4}');", iId, dDate, sKontakttyp, sLang, sMeddelande
</code>
styrs det automatiskt vad det är för datatyp i databasen?
Är det bra att ha den här typen även vid select?


Svara

Sv:Problem med SQL och SELECT @@identity; Har fungerat tidigare

Postades av 2008-03-04 13:11:07 - Pelle Johansson

Japp, om du har '' runt alla fält så kommer den inte klaga på det utan lagra numeriska värden rätt trots du anger '' runt.

Tänk alltid på sql-injection så du inte blir hackad bara så är det ganska lugnt.


Svara

Sv: Problem med SQL och SELECT @@identity; Har fungerat tidigare

Postades av 2008-03-04 13:33:28 - Benni Svensson

Tack Pelle sql-injection har jag redan tagit hand om.
Då skall jag göra mina sql så i fortsättningen.


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 166
27 952
271 704
2 113
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies