Avatar billede innercitydk Nybegynder
04. december 2005 - 18:53 Der er 14 kommentarer og
1 løsning

Hvordan kan jeg gemme kode eksempler i en mysql database

Jeg har en tekstbox hvor man skal kunne indtaste kodeeksempler. Hvordan gør man det?!

vh Nicki
Avatar billede arne_v Ekspert
04. december 2005 - 19:46 #1
er det ikke bare at gemme dintextbox.Text i et felt af typen TEXT elelr MEDIUMTEXT ?
Avatar billede innercitydk Nybegynder
04. december 2005 - 23:29 #2
Hej Arne. når jeg prøver at gemmer det i databasen laver den fejl så snart den rammer visse karakterer. f.eks hvis jeg skriver noget c# kode i en tekstbox og vil indsætte det så fejler det. Feltet i databasen er et text felt. Det virker fint når jeg insætter almindelig tekst

vh
Avatar billede arne_v Ekspert
04. december 2005 - 23:38 #3
bruger du parameters ?

nej => gør det !
Avatar billede arne_v Ekspert
04. december 2005 - 23:42 #4
et eksempel fra lageret:

using System;
using System.IO;
using MySql.Data.MySqlClient;

class MainClass
{
    public static void Main(string[] args)
    {
        MySqlConnection con = new MySqlConnection("Database=Test;Data Source=localhost;User Id=;Password=");
        con.Open();
        MySqlCommand cre = new MySqlCommand("CREATE TABLE files (filename INTEGER PRIMARY KEY AUTO_INCREMENT, content TEXT)", con);
        cre.ExecuteNonQuery();
        MySqlCommand ins = new MySqlCommand("INSERT INTO files(content) VALUES (?content)", con);
        ins.Parameters.Add("?content", MySqlDbType.Blob);
        string[] filenames = Directory.GetFiles(@"C:\scripts", "*.bat");
        for(int i = 0; i < filenames.Length; i++)
        {
            StreamReader sr = new StreamReader(filenames[i]);
            string content = sr.ReadToEnd();
            sr.Close();
            ins.Parameters["?content"].Value = content;
            ins.ExecuteNonQuery();
        }
        MySqlCommand drp = new MySqlCommand("DROP TABLE files", con);
        drp.ExecuteNonQuery();
        con.Close();
    }
}
Avatar billede arne_v Ekspert
04. december 2005 - 23:42 #5
det er .bat filer og ikke C# kode fra en tekst box der gemmes, men
teknikken med parameters er den samme
Avatar billede innercitydk Nybegynder
04. december 2005 - 23:49 #6
Jeg har ikke brugt params.. her er min kode til at indsætte:


private void indsaet(object sender, System.EventArgs e)
{
    string forumid=hentid();
    DateTime datoTmp = DateTime.Parse(DateTime.Now.ToShortTimeString());
    string date = datoTmp.ToString("dd-MM-yyyy hh:mm:ss");
    bool gennemfoert=false;
    string strDSN = settings.hentdbplacering();
    OdbcConnection myConn = new OdbcConnection(strDSN);
    string svar_formateret=System.Text.RegularExpressions.Regex.Replace(TextBox1.Text, @"\n", "<br>");
    string sql = "Insert into forum_svar (id,forumid,mnr,svar,dato) Values (";
    sql=sql+int.Parse(forumid)+",";//id
    sql=sql+int.Parse(Request.QueryString["id"])+",";//forumid
    sql=sql+int.Parse(Session["mnr"].ToString())+",'";//mnr
    sql=sql+svar_formateret+"','";//svar
    sql=sql+date+"'";//dato
    sql=sql+")";//afslutning
    OdbcCommand insertCommand = new OdbcCommand(sql,myConn);
    try
    {
        myConn.Open();
        try
        {
        insertCommand.ExecuteNonQuery();
        gennemfoert=true;
        Response.Redirect("forum_vis_detaljer.aspx?id="+Request.QueryString["id"]);
        }
        catch
        {
        TextBox1.Text="Fejl i SQL";
        //TextBox2.Text=hentid();
        }
    }
    catch
    {
        TextBox1.Text="Kan ikke åbne db";
    }
    finally
    {
        myConn.Close();
    }
}

Jeg smutter i kassen nu her.. Svarer først i morgen formiddag igen :)

Vh
Avatar billede arne_v Ekspert
05. december 2005 - 00:06 #7
ikke parameters => du går død på bl.a. ' i C# koden

læs f.eks. http://www.eksperten.dk/artikler/831

så skift til parameters !
Avatar billede arne_v Ekspert
05. december 2005 - 00:07 #8
og skift fra ODBC til MySQL connector for .NET
Avatar billede innercitydk Nybegynder
05. december 2005 - 14:32 #9
Hej Arne. Jeg prøvede først at lave svar feltet om til at bruge params, men jeg får en stadig sql fejl når jeg vil indsætte specielle karakterer. Er det mon fordi feltet i databasen er et tekstfelt?

        string sql = "Insert into forum_svar (id,forumid,mnr,svar,dato) Values (";
    sql=sql+int.Parse(forumid)+",";//id
    sql=sql+int.Parse(Request.QueryString["id"])+",";//forumid
    sql=sql+int.Parse(Session["mnr"].ToString())+",";//mnr
    sql=sql+"?content,'";//svar
    sql=sql+date+"'";//dato
    sql=sql+")";//afslutning
    OdbcCommand insertCommand = new OdbcCommand(sql,myConn);
    insertCommand.Parameters.Add("?content");
    insertCommand.Parameters["?content"].Value = TextBox1.Text;
Avatar billede innercitydk Nybegynder
05. december 2005 - 14:34 #10
Hvordan tror du de har gjort her på eksperten

vh
Avatar billede innercitydk Nybegynder
05. december 2005 - 15:17 #11
Jeg har skiftet det hele til SqlClient. Det virker som om responstiden er endnu hurtigere nu eller kan det ikke passe
Avatar billede innercitydk Nybegynder
05. december 2005 - 15:29 #12
Jeg har fikset det Arne.. Jeg lavede feltet om til varchar :( Dummer dummer dag så kan jeg lære det hehe

Smid lige et svar

Vh Nicki
Avatar billede innercitydk Nybegynder
05. december 2005 - 17:14 #13
</head>
<body class="body">
<div align="center">
  <table class="maintable">
    <tr>
      <td class="maintd"> <!-- #include file ="header.aspx" -->
        <table cellpadding="0" cellspacing="0" class="subtd">
          <tr>
            <td colspan="3"></td>
          </tr>
          <tr>
            <td class="leftmenu"> <!-- #include file ="leftmenu.aspx" -->
              <!-- #include file ="mods/mod_login_session.aspx" --> </td>
            <td class="center"> <div style="height:700px; overflow:auto;">
                <table cellspacing="0" cellpadding="0">
                  <tr>
                    <td colspan="3" class="contenttop"><img src="pics/contenttopbg.jpg" width="620" height="20"></td>
                  </tr>
                  <tr>
                    <td class="contentleft"><img src="pics/spacercontent.gif" width="1" height="650"></td>
                    <td class="contentmiddle">
                    <div align="center" style="height:390px; overflow:auto">
                        <table border="0" cellspacing="0" cellpadding="0" width="574" class="tekst">
                          <tr>
                            <td valign="top">
                           
<table width="550" align="left" border="0" class="tekst">
<wilson:form id="form3">
<tr>
<td align="center" valign="top">
  <div align="left">
  <asp:label ID="kategori" runat="server"></asp:label>
  <asp:Repeater ID="Repeater1" runat="server">
        <headerTemplate>
    <tr>
      <td width="210" align="left">Overskrift</td>
      <td width="100" align="left">&nbsp;Kategori</td>
      <td width="15" align="left">&nbsp;</td>
      <td width="100" align="left">Bruger</td>
      <td width="120" align="left">Dato</td>
    </tr>
        </headerTemplate>
                <ItemTemplate>
                    <tr>
                        <td valign="top" width="210" align="left" style="font-weight:bold ">
                        <a href="forum_vis_detaljer.aspx?id=<%# DataBinder.Eval(Container.DataItem,"id") %>"><%# DataBinder.Eval(Container.DataItem, "overskrift") %></a>    <br>
                                            </td>
                        <td valign="top" width="100" align="left">
                        &nbsp;&nbsp;<%# DataBinder.Eval(Container.DataItem, "kategori") %>
                        </td>
                        <td valign="top" width="15" align="left">
                        <img src='<%#DataBinder.Eval(Container.DataItem, "billede").ToString() %>'>
                      </td>
                        <td valign="top" width="100" align="left">
                        <%# DataBinder.Eval(Container.DataItem, "navn") %>
                        </td>
                        <td valign="top" width="120" align="left">
                        <%# DataBinder.Eval(Container.DataItem, "dato") %>
                        </td></tr>
                </ItemTemplate>
               
                <FooterTemplate>
                   
                </FooterTemplate>
       
      </asp:Repeater><br><br>
</td>
</tr>
<tr>
<td valign="bottom">
      &nbsp;&nbsp;<asp:label ID="lblCurrentPage" runat="server"></asp:label>
      &nbsp;&nbsp;<asp:HyperLink id="lnkPrev" runat="server"><< Tilbage</asp:HyperLink>
                  <asp:HyperLink id="lnkNext" runat="server">Næste >></asp:HyperLink><br><br>
                  <div align="left"><img src="pics/user.gif"><span style="font-size:9px; font:Arial, Helvetica, sans-serif">Bruger</span>
      <img src="pics/dev.gif"><span style="font-size:9px; font:Arial, Helvetica, sans-serif">Udvikler</span>
    </div>
      </td>
  </tr>
  </wilson:form>
</table> </td>
                          </tr>
                        </table>
                       
                        </p>
                      </div>
                      <div style="vertical-align:bottom "><img src="pics/spacercontentbig.gif"><br>
          <table width="450" align="center" class="tekst">
          <tr>
          <td align="left">
          <wilson:form id="Form2" method="post" runat="server">
            Overskrift:<br>
            <asp:TextBox id="TextBox1" runat="server" Width="450px"></asp:TextBox>
            <br>
            Indhold:<br>
            <asp:TextBox id="TextBox2" runat="server" TextMode="MultiLine" Height="110px" Width="450px"></asp:TextBox>
            <br>
            <asp:Button id="Button1" runat="server" OnClick="indsaet"    Text="Opret forum indlæg"></asp:Button>
            <asp:label ID="labelmnr" Visible="false" runat="server"></asp:label>
                </wilson:form></td>
          </tr>
          </table>
          </div>
                    </td>
                    <td class="contentright"></td>
                  </tr>
                  <tr>
                    <td colspan="3" class="contentbottom"><img src="pics/contentbottombg.jpg" width="620" height="20"></td>
                  </tr>
                </table>
              </div></td>
            <td class="rightmenu"> <!-- #include file ="rightmenu.aspx" -->
&nbsp;</td>
          </tr>
        </table></td>
    </tr>
  </table>
</div>
</body>
</html>
Avatar billede innercitydk Nybegynder
05. december 2005 - 17:14 #14
ups postet det forkerte sted haha...

smid lige et svar arne
Avatar billede arne_v Ekspert
05. december 2005 - 20:05 #15
SqlClient er SQLServer.

Hurtigere ? Afh;nger af hvad du laver og om det er MYiSAM elelr InnoDB tabeller
du bruger i MySQL !

Og svar.
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