Avatar billede agertoft Nybegynder
29. marts 2005 - 00:41 Der er 15 kommentarer og
1 løsning

Specielle tegn i Access og MSSQL db

Kan det passe, at Access ikke vil gemme æ, ø og å en databasen fra en TextBox? Jeg har før arbejdet med MySQL og synes ikke der var nogle problemer der.

Er der de samme problemer i MSSQL? Og hvordan kommer man uden om problemet i Access - det her virker nemlig ikke..:

headline = headline.Replace("ø", "ø");
headline = headline.Replace("Ø", "Ø");
headline = headline.Replace("å", "å");
headline = headline.Replace("Å", "Å");
headline = headline.Replace("æ", "æ");
headline = headline.Replace("Æ", "Æ");
Avatar billede jokkejensen Novice
29. marts 2005 - 01:13 #1
Brug Server.HtmlEncode(streng)...
Avatar billede arne_v Ekspert
29. marts 2005 - 08:31 #2
Access kan sagtens håndtere ÆØÅ

Kan du beskrive din kode og hvad der sker lidt mere detaljeret
Avatar billede agertoft Nybegynder
29. marts 2005 - 18:34 #3
Jeg har en række TextBox'e, hvori der står en artikel som allerede er skrevet. Formen er til for at kunne opdatere artiklen - altså posten i databasen. Når der trykkes på "Opdater"-knappen køres følgende kode:

foreach(DataListItem newsItem in DataListSingleNews.Items)
{
    headline = ((TextBox)newsItem.FindControl("TextBoxHeadline")).Text;
    date = DateTime.Parse(((TextBox)newsItem.FindControl("TextBoxDate")).Text);
    content = ((TextBox)newsItem.FindControl("TextBoxContent")).Text;
    author = ((TextBox)newsItem.FindControl("TextBoxAuthor")).Text;
}

Nu er alt hentet ind i variabler, og nu skal posten opdateres:

oDAnews.update(int.Parse(id), headline, date, content, author);

Datalaget bliver kaldt og posten opdateres på følgende måde:

public void update(int id, string headline, DateTime date, string content, string author)
{
    System.Data.OleDb.OleDbConnection conn = new
        System.Data.OleDb.OleDbConnection();
               
    conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + HttpContext.Current.Server.MapPath("../pointdb2005.mdb") + ";";
    OleDbCommand oCommand;
   
    string sql = "UPDATE news SET headline1 = @headline, date1 = @date, content1 = @content, author1 = @author "+
        "WHERE id = " +@id;

    try
    {
        conn.Open();

        oCommand = new OleDbCommand(sql, conn);

        oCommand.Parameters.Add("@headline", OleDbType.VarChar);
        oCommand.Parameters.Add("@date", OleDbType.Date);
        oCommand.Parameters.Add("@content", OleDbType.VarChar);
        oCommand.Parameters.Add("@author", OleDbType.VarChar);

        oCommand.Parameters["@headline"].Value = headline;
        oCommand.Parameters["@date"].Value = date;
        oCommand.Parameters["@content"].Value = content;
        oCommand.Parameters["@author"].Value = author;

        oCommand.ExecuteNonQuery();
    }

    catch(Exception oException)
    {
        throw oException;
    }

    finally
    {
        conn.Close();
    }
}

Selve teksterne bliver opdateret, men alle æ, ø, å og Æ, Ø og Å bliver ikke gemt med. Disse tegn forsvinder i selve opdateringen. Hvorfor?
Avatar billede agertoft Nybegynder
29. marts 2005 - 18:34 #4
jokkejensens svar gør ingen forskel :(
Avatar billede agertoft Nybegynder
29. marts 2005 - 18:35 #5
og et sidespørgsmål... kan det passe, at man ikke får lov til at gemme fx <br> tags i databasen, når man checker parametrenes format? Jeg får en fejl om, at koden er usikker... Hvordan gør man så det?
Avatar billede jokkejensen Novice
29. marts 2005 - 20:20 #6
dinStreng.Text.Replace("\n", "<br>"); <-- den erstatter newlines med <br>
men ønsker du at skrive <br> og andre html tags så skriver du bare ValidateRequest="false" i dit page directive, eller hvad det nu er den hedder..

prøv lige at udskrive din sql streng før du smider den i database og se om du allerede der har mistet æøå så vi kan lokalisere fejlen lidt...
Avatar billede agertoft Nybegynder
29. marts 2005 - 20:30 #7
En rettelse: Jeg kan sagtens gemme <br> tags i databasen, men den brokker sig, når jeg vil opdatere en tekst med fx <br> og <li> tags i. Altså KUN når jeg vil opdatere...
Avatar billede jokkejensen Novice
29. marts 2005 - 20:34 #8
ValidateRequest="false" burde fikse det når den brokker sig over at koden er usikker..
Avatar billede arne_v Ekspert
29. marts 2005 - 20:34 #9
dinStreng.Text.Replace("\n", "<br>");

må skulle være:

dinStreng.Text = dinStreng.Text.Replace("\n", "<br>");
Avatar billede arne_v Ekspert
29. marts 2005 - 20:36 #10
Men ja det kunne være lidt interessant at vide hvor ÆØÅ forsvinder.

Jeg har en lille smule mistanke til UTF-8 versus ISO-8859-1 problemer.
Avatar billede jokkejensen Novice
29. marts 2005 - 20:39 #11
<globalization fileEncoding="iso-8859-1" requestEncoding="iso-8859-1" responseEncoding="iso-8859-1" culture="da-DK" uiCulture="da-DK"/>

smid den i web.config
Avatar billede agertoft Nybegynder
29. marts 2005 - 21:06 #12
jokkejensen, det virker sørme :) Synes nu at jeg havde prøvet den løsning fra en af de tidligere tråde, men har først fået det til at virke nu. Smid et svar :)

Kan I også hjælpe med det mht den "usikre" kode? Når jeg fx vil opdatere min artikel, som indeholde fx <li> tegn, så brokker den sig, når den checker på, om parametren er rigtig. Så får jeg følgende fejl:

A potentially dangerous Request.Form value was detected from the client (_ctl0:DataListSingleNews:_ctl1:TextBoxContent="...ubben: <li>1 Keenes ketcher...").
Description: Request Validation has detected a potentially dangerous client input value, and processing of the request has been aborted. This value may indicate an attempt to compromise the security of your application, such as a cross-site scripting attack. You can disable request validation by setting validateRequest=false in the Page directive or in the configuration section. However, it is strongly recommended that your application explicitly check all inputs in this case.

Exception Details: System.Web.HttpRequestValidationException: A potentially dangerous Request.Form value was detected from the client (_ctl0:DataListSingleNews:_ctl1:TextBoxContent="...ubben: <li>1 Keenes ketcher...").

Kan I hjælpe mig med den også er der lidt flere point at hente... jokkejensen, hvor skal jeg skrive det ValidateRequest="false" henne? Og er det smart? Fjerner det ikke det tjek, jeg har lavet på, om der bliver skrevet usikkert input til min database?
Avatar billede jokkejensen Novice
29. marts 2005 - 21:13 #13
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconPage.asp

Du skriver den blot i toppe af dit dokument i "page directive" der hvor der står <%# page %>, nej den er harmløs så længe den ligger i en admin del, den tillader blot html tags at blive godtaget...
Avatar billede jokkejensen Novice
29. marts 2005 - 21:14 #14
<%@ page %> even :)
Avatar billede agertoft Nybegynder
29. marts 2005 - 21:26 #15
Mange tak... det løser jo alle mine problemer :D
Avatar billede jokkejensen Novice
29. marts 2005 - 21:31 #16
Så lidt... Glad for det virker.. 2 små irriterende fejl :)
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