Avatar billede tanzaweb Nybegynder
11. maj 2004 - 00:48 Der er 5 kommentarer og
1 løsning

Syntax error (missing operator) in query expression

Hej
jeg regner med jeg måske har et problem med adgang til min database, hvis jeg får denne fejl?

Syntax error (missing operator) in query expression ''Scriptet til at indlæse nyheder på DHL's intranet er nu klar og vil blive testet de næste dag. I vil hører mere fra webmasteren senere', '10-05-2004 23:41:16')'.
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.OleDb.OleDbException: Syntax error (missing operator) in query expression ''Scriptet til at indlæse nyheder på DHL's intranet er nu klar og vil blive testet de næste dag. I vil hører mere fra webmasteren senere', '10-05-2004 23:41:16')'.

Source Error:


Line 20:             myConnection.Open();
Line 21:             OleDbCommand myCommand = new OleDbCommand(strSQL, myConnection );
Line 22:             myCommand.ExecuteNonQuery();
Line 23:             myConnection.Close();
Line 24:             lblBesked.Text ="Du har oprettet en nyhed som er " + tbnyhedOverskrift.Text;


Source File: d:\users\tanzaweb\DHL\administration\nyhed_insert.aspx    Line: 22

Er der nogen der kan hjælpe?
Avatar billede tanzaweb Nybegynder
11. maj 2004 - 01:42 #1
hej jeg har lige funde t ud af at fejlen komer når jeg bruger et ' et eller andet sted i teksten
jeg skal vel bruge et eller andet replace eller skal jeg ??

string strNyhedOverskrift, strNyhedTekst;
        string strSQL;
        strNyhedOverskrift = tbnyhedOverskrift.Text;
        strNyhedTekst = tbnyhedTekst.Text;
        strSQL = "INSERT INTO nyhed (nyhedOverskrift, nyhedTekst, nyhedDato) Values ('";
            strSQL += strNyhedOverskrift + "', '";
            strSQL += strNyhedTekst + "', '";
            strSQL += DateTime.Now + "')";
            //Response.Write(strSQL);
            OleDbConnection myConnection = new OleDbConnection(@"Provider=Microsoft.JET.OLEDB.4.0;Data Source=" + Server.MapPath("~/DHL/database/dhl.mdb"));
            myConnection.Open();
            OleDbCommand myCommand = new OleDbCommand(strSQL, myConnection );
            myCommand.ExecuteNonQuery();
            myConnection.Close();
            lblBesked.Text ="Du har oprettet en nyhed som er " + tbnyhedOverskrift.Text;
            btInsert.Enabled=false;
    }
Avatar billede tanzaweb Nybegynder
14. maj 2004 - 13:16 #2
nå så er eks. oppe igen håber der er nogle der kan hjælpe med spørgsmålet.
Avatar billede tanzaweb Nybegynder
14. maj 2004 - 13:17 #3
noget med en replace eller?
Avatar billede burix Nybegynder
14. maj 2004 - 13:39 #4
Yep - en replace vil løse problemet. Du skal replace ' med '' så virker det.
I vb.net ville jeg gøre sådan her:
streng = Replace(streng, "'", "''")
men c# er knap så smart. Så må man jo implementere sin en hel replace funktion:

public static String Replace(String oText,String oFind,String
oReplace)
{
  int iPos=oText.IndexOf(oFind);
  String strReturn="";
  while(iPos!=-1)
  {
    strReturn+=oText.Substring(0,iPos) + oReplace;
    oText=oText.Substring(iPos+oFind.Length);
    iPos=oText.IndexOf(oFind);
  }
  if(oText.Length>0)
    strReturn+=oText;
  return strReturn;
}
}
Avatar billede tanzaweb Nybegynder
15. maj 2004 - 11:29 #5
den replace du har til vb hvordan vil den se ud i eks. strSQL += strNyhedOverskrift + "', '";

Fordi jeg kan husk at have brugt det men kan ikke finde den igen.
Avatar billede tanzaweb Nybegynder
21. juni 2004 - 14:24 #6
lukker spørgsmålet da der ikke er nogle svar der virker, og der er gået for lang tid
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