Avatar billede mik28 Seniormester
04. marts 2003 - 16:14 Der er 9 kommentarer og
1 løsning

problem med pinger

Hej Eksperter,

Jeg har et problem med pinger. Det handler om at jeg uploader filer. Det er lavet sådan at en fil bliver uploadet til et bibliotek og så bliver filnavnet lagt i en tabel som jeg så senere bruger til at lave den side hvor man så kan downloade. Problemet er her. Hvis url nu er I'm going slightly mad vil pingen i I'm lave ged i det. Hvordan kommer jeg ud over det?

String url = file.getFileName();
        // .replaceAll("'","");
        ResultSet rs = d.select("SELECT * FROM tracks WHERE name='" + name + "' AND url='" + url + "'" );
            if (! rs.next()) {
                d.insertUpdate("INSERT INTO tracks (name,url) VALUES ('"+name+"','"+url+"')");               
                System.out.println("raekken fandtes ikke om er oprettet!");
            }
Avatar billede arne_v Ekspert
04. marts 2003 - 16:16 #1
Brug PreparedStatement istedetfor Statement, så har du ingen pling problemer.
Avatar billede mik28 Seniormester
04. marts 2003 - 16:18 #2
Overhovedet ikke forstået :-)
Avatar billede arne_v Ekspert
04. marts 2003 - 16:18 #3
Nu kan jeg se at du bruger den database wrapper som meget
ofte er blevet postet her.

Så vidt jeg kan se har du to muligheder:

1)  droppe den og selv lave dine JDBC kald (det er stort set ikke mere
    besværligt end med database wrapperen)
2)  lave en tilføjelse til den database-klasse så den kan bruge
    PreparedStatement
Avatar billede arne_v Ekspert
04. marts 2003 - 16:21 #4
Når du laver bruger Statement så skriver man:

Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM tabel WHERE field = '" + value + "'");

og får problemer hvis value indeholder quotes.

Når du bruger PreparedStatement skriver du:

PreparedStatement pstmt = con.prepareStatement("SELECT * FROM table WHERE field = ?");
pstmt.setString(1, value);
ResultSet rs = pstmt.executeQuery();

og du har ingen pling problemer !
Avatar billede mik28 Seniormester
04. marts 2003 - 16:25 #5
package util;
import java.sql.*;


public class Databaseforbindelsemysql
{
    private Connection conn ;
    private PreparedStatement stmt;
       
    public Databaseforbindelsemysql(String data, String driver)
    {
       
        try
        {
            Class.forName(driver);
            conn = DriverManager.getConnection(data, "", "");
            stmt = conn.prepareStatement();
        }
        catch(Exception s)
        {
            System.out.println("SQL dataforbindelse fejlede"+s);
        }   
    }
Avatar billede mik28 Seniormester
04. marts 2003 - 16:26 #6
er det helt forkert :-(
Avatar billede mik28 Seniormester
04. marts 2003 - 16:35 #7
Okay jeg tror godt jeg kan se hvad jeg skal gøre :-)
Avatar billede arne_v Ekspert
04. marts 2003 - 16:38 #8
OK.

Ellers må du lige fortsætte med at spørge her.
Avatar billede mik28 Seniormester
06. marts 2003 - 09:39 #9
Jeg har besluttet at lave en klasse til at håndterer preparedstatement, men jeg har problemer. Jeg forsøger at gøre som du siger men jeg kan ikke få det til at virke.

package util;
import java.sql.*;


public class Databaseforbindelsemysqlprepared
{
    private Connection conn ;
    private PreparedStatement stmt;
       
    public Databaseforbindelsemysqlprepared(String data, String driver)
    {
       
        try
        {
            Class.forName(driver);
            conn = DriverManager.getConnection(data, "", "");
            PreparedStatement pstmt = conn.prepareStatement();
            pstmt.setString(1, value);

        }
        catch(Exception s)
        {
            System.out.println("SQL dataforbindelse fejlede"+s);
        }   
    }
Avatar billede mik28 Seniormester
06. marts 2003 - 10:34 #10
Hvad er value??

Hele min klasse ser således ud

package util;
import java.sql.*;


public class Databaseforbindelsemysqlprepared
{
    private Connection conn ;
    private PreparedStatement pstmt;
       
    public Databaseforbindelsemysqlprepared(String data, String driver)
    {
       
        try
        {
            Class.forName(driver);
            conn = DriverManager.getConnection(data, "", "");
           
       
           

        }
        catch(Exception s)
        {
            System.out.println("SQL dataforbindelse fejlede"+s);
        }   
    }
   
    public ResultSet select(String sql)
    {
        ResultSet r = null;
        try
       
        {
        PreparedStatement pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, value);
        r = pstmt.executeQuery();
       
        }
        catch(SQLException s)
        {
            System.out.println("Select fejlede: "+s);
        }       
        return r;
    }
   
    public void insertUpdate(String sql)
    {
        try
        {
            pstmt.executeUpdate(sql);
        }
        catch(SQLException s)
        {
            System.out.println("update/insert fejlede");
        }       
    }
   
    public void close()
    {
        try
        {
            pstmt.close();
        }
        catch(SQLException s)
        {
            System.out.println("Close fejlede");
        }
       
    }
}
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
Kurser inden for grundlæggende programmering

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