Avatar billede Slettet bruger
01. februar 2006 - 14:59 Der er 17 kommentarer og
1 løsning

Linieskift i sql-sætning

Roder med noget script hvori der indgår en sql-sætning, som faktisk er så lang at den ikke kan være i Dreamweaver MX2004, hvilket giver mig en fejlmeddelse: CS1010: Linjeskift i konstant

sql = "Insert into huse ([navn], [tlfnummer] values('" + Session["navn"].ToString() + "','" + Session["tlfnummer"].ToString() + "')";  (Sætningen er MEGET længere end vist)

Hvordan kan jeg lave et linieskift i denne sætning så jeg undgår fejlmeddelsen?
Avatar billede hmortensen Nybegynder
01. februar 2006 - 15:25 #1
string sql = "blah blah" +
            "blah blah" +
            "blah blah";
Avatar billede arne_v Ekspert
01. februar 2006 - 15:54 #2
string s = "xxxx" +
          "yyyy" +
          "zzzz";

som i alle andre sprog er nok det du skal bruge i SQL fordi det netop ikke
laver linieskift i SQL'en.

og i en streng som du konstruerer (hvorfor bruger du ikke paramtere ??)
saa kan du dele strengen foer eller efter alle +

hvis der skal vaere liniskift i strengen er der en C#isme:

string s = @"xxxx
yyyy
zzzz";

men det tror jeg ikke er godt for SQL
Avatar billede mikkel_sommer Nybegynder
01. februar 2006 - 15:54 #3
du kan også prøve:

string sql = "blah blah \r\n blah blah \r\n blah blah";

\r\n = linieskift
Avatar billede Slettet bruger
06. februar 2006 - 08:37 #4
Ingen af de overstående eksempler synes at virke. Herunder er vist hele sql-sætningen, hvordan den er opbygget. Det er sessionerne som behøves at være adskildt.

string sql;
    if (Session["omraadeny"]=="ja")
    {
    sql = "Insert into huse (navn, tlfnummer) values()";
    sql = "Insert into huse ([navn], [tlfnummer]) values('" + Session["navn"].ToString() + "','" + Session["tlfnummer"].ToString() + "')"; 
    cmd = new OleDbCommand(sql, dbConn);
    cmd.ExecuteNonQuery();
Avatar billede nielle Nybegynder
06. februar 2006 - 08:56 #5
1) Du kan starte med at slette den første sql-linje - den laver ikke noget, og er altså bare død kode (foruden at det faltisk er ulovlig SQL-syntaks).

2) Hvordan kommer Dreamweaver egentlig ind i billedet?
Avatar billede Slettet bruger
06. februar 2006 - 09:03 #6
sql-sætningen er så lang at Dreamweaver selv generér linieskiftet...
Avatar billede nielle Nybegynder
06. februar 2006 - 09:05 #7
Jamen, din SQL-sætning bliver jo udført i dit C# program. Hvad har det præcist med Dreamweaver at gøre?
Avatar billede nielle Nybegynder
06. februar 2006 - 09:25 #8
Er det fordi at du bruger Dreamweaver som din editor, eller noget i den stil? Og at det så er Dw som splitter linjen op sådan at den ikke kan kompileres med csc-compileren?

I så fald skulle du nok overveje en anden editor såsom:

SharpDevelop:
http://www.icsharpcode.net/OpenSource/SD/Default.aspx (gratis)

Visual Studio C# Express 2005:
http://msdn.microsoft.com/vstudio/express/visualcsharp/ (også gratis)

Men ellers kan du måske her-og-nu bruge dette:

sql = "INSERT INTO huse ([navn], [tlfnummer]) ";
sql += "VALUES ('" + Session["navn"].ToString() + "', '" + Session["tlfnummer"].ToString() + "')";
Avatar billede Slettet bruger
06. februar 2006 - 10:43 #9
Yeps! Denne løsning var det jeg ledte efter.

sql = "INSERT INTO huse ([navn], [tlfnummer]) ";
sql += "VALUES ('" + Session["navn"].ToString() + "', '" + Session["tlfnummer"].ToString() + "')";

NYT PROBLEM! Jeg får ingen fejlmeddelser, med der indsættes heller ikke noget i databasen... *suk*
Avatar billede hmortensen Nybegynder
06. februar 2006 - 15:36 #10
Prøvet at debugge ?

Hvorfor bruger du ikke parameters, som arne også forslår (beskytter bl.a. mod sql injection) ?
Avatar billede nielle Nybegynder
06. februar 2006 - 15:37 #11
Kan det skyldes at din kode-block måske slet ikke bliver eksekveret?

if (Session["omraadeny"]=="ja")
{
    MessageBox.Show("DEBU/G: Jo, vi kommer ind i blokken.");
    sql = "INSERT INTO huse ([navn], [tlfnummer]) ";
    sql += "VALUES ('" + Session["navn"].ToString() + "', '" + Session["tlfnummer"].ToString() + "')";
    cmd = new OleDbCommand(sql, dbConn);
    cmd.ExecuteNonQuery();
    ...
}
else
    MessageBox.Show("DEBUG: Nej, vi kommer ikke ind i blokken.");
Avatar billede arne_v Ekspert
06. februar 2006 - 15:48 #12
er tlfnummer en varchar ?
Avatar billede Slettet bruger
06. februar 2006 - 22:28 #13
Giver denne fejlmeddelse når jeg prøver at debugge:
CS0246: Typen eller navneområdenavnet 'MessageBox' kunne ikke findes (mangler der et 'using'-direktiv eller en assemblyreference?)
Avatar billede Slettet bruger
06. februar 2006 - 22:29 #14
tlfnummer er "tekst" (accessdatabase)
Avatar billede hmortensen Nybegynder
06. februar 2006 - 22:34 #15
Skal session objectet ikke string parses, for at sammenligningen kan udføres ?

Når du bruger web, så brug Respone.Write() i stedet for MessageBox.Show()
Avatar billede Slettet bruger
06. februar 2006 - 23:22 #16
GLEM ALT EFTER KL 1043!!!

Hvad end jeg fumlede med opfuldte ikke denne session

if (Session["omraadeny"]=="ja") DUH!!!! altså nogen gange...tsk tsk tsk!

Spørgsmål lukket! (8-/
Avatar billede Slettet bruger
07. februar 2006 - 17:23 #17
Point givet...
Avatar billede arne_v Ekspert
07. februar 2006 - 18:12 #18
til dig selv ...
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