Avatar billede ascii Nybegynder
21. maj 2002 - 20:25 Der er 15 kommentarer og
1 løsning

Hvad er der galt.

Hvad er der galt her...

<HTML>
<BODY>
<%
String ip=request.getRemoteAddr();


    Class.forName("org.gjt.mm.mysql.Driver");

    Connection myConn = DriverManager.getConnection("jdbc:mysql://212.10.223.51:3306/Administration","xx","xxx");

    Statement stmt = myConn.createStatement();

    ResultSet myResultSet = stmt.executeQuery("select ipid from ipadresse where minip<="+ip+" and maxip>="+ip+"");

      if(myResultSet != null)
        {
        while(myResultSet.next())
          {
                       
              %>
                out.println(myResultSet.getInt("ipid"));     
          <%
               

          }
        }
       


      stmt.close();

      myConn.close();

%>

</body>

</html>



Fejl
java.sql.SQLException: Syntax error or access violation: You have an error
in your SQL syntax near '.223.51 and maxip>=212.10.223.51' at line 1
    at org.gjt.mm.mysql.MysqlIO.sendCommand(MysqlIO.java:497)
    at org.gjt.mm.mysql.MysqlIO.sqlQueryDirect(MysqlIO.java:550)
    at org.gjt.mm.mysql.MysqlIO.sqlQuery(MysqlIO.java:635)
    at org.gjt.mm.mysql.Connection.execSQL(Connection.java:882)
    at org.gjt.mm.mysql.Connection.execSQL(Connection.java:815)
    at org.gjt.mm.mysql.Statement.executeQuery(Statement.java:169)
    at org.gjt.mm.mysql.jdbc2.Statement.executeQuery(Statement.java:78)
    at _log__jsp._jspService(/log.jsp:35)
    at com.caucho.jsp.JavaPage.service(JavaPage.java:74)
    at com.caucho.jsp.Page.subservice(Page.java:485)
    at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:179)
    at com.caucho.server.http.Invocation.service(Invocation.java:288)
    at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:132)
    at com.caucho.server.http.ServletServer.serviceTop(ServletServer.java:937)
    at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:213)
    at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:158)
    at com.caucho.server.TcpConnection.run(TcpConnection.java:140)
    at java.lang.Thread.run(Thread.java:484)


Avatar billede erikjacobsen Ekspert
21. maj 2002 - 20:31 #1
...minip<='"+ip+"' and maxip>='"+ip+"'"):
Avatar billede erikjacobsen Ekspert
21. maj 2002 - 20:34 #2
Men iøvrigt giver det ikke mening at sammenligne IP-numre ud fra
deres xxx.xxx.xxx.xxx repræsentation :)
Avatar billede ascii Nybegynder
21. maj 2002 - 20:36 #3
Er der nogen forskel??
Avatar billede ascii Nybegynder
21. maj 2002 - 20:37 #4
Jeg skal bruge det til verifikation, så i mit tilfælde jo
Avatar billede erikjacobsen Ekspert
21. maj 2002 - 20:39 #5
Nej, det giver ikke mening

  minip = xxx.xxx.xxx.xxx.33
  maxip = xxx.xxx.xxx.xxx.55

ligger xxx.xxx.xxx.4 i dette interval? Nej. Men din sql vil sige ja
(når/hvis den virker). Det giver altså ingen mening at lave den
sammenligning
Avatar billede ascii Nybegynder
21. maj 2002 - 20:41 #6
Hvordan kan man så gøre det??
Avatar billede erikjacobsen Ekspert
21. maj 2002 - 20:44 #7
xxx.xxx.xxx.033 xxx.xxx.xxx.055 xxx.xxx.xxx.004 - så virker det ...
Avatar billede ascii Nybegynder
21. maj 2002 - 21:19 #8
Nu har jeg i min DB minip = 212.010.223.051 maxip = 212.010.223.051. Jeg søger efter disse men den giver samme fejl...
Avatar billede ascii Nybegynder
21. maj 2002 - 21:23 #9
det er fordi min ip er 212.10.223.51, og at der ikke er 0'er hvor der står 10 og 51. Har du nogle forslag
Avatar billede erikjacobsen Ekspert
21. maj 2002 - 21:25 #10
ja, du skriver en lille funktion....
Avatar billede ascii Nybegynder
21. maj 2002 - 22:02 #11
Ja det er sq nemmere sagt end gjordt ;-))
Avatar billede erikjacobsen Ekspert
21. maj 2002 - 22:03 #12
Du skal bare sige til hvis du skal have hjælp .... :)
Avatar billede ascii Nybegynder
21. maj 2002 - 22:05 #13
HJÆÆÆLLLPPPPP Ha Ha
Avatar billede disky Nybegynder
21. maj 2002 - 22:07 #14
ascii

Tag og regn dine ip adresser om til hele tal, så kan du bruge < og > til at finde det med.
Avatar billede erikjacobsen Ekspert
21. maj 2002 - 22:16 #15
Ok da, her er en lille fuske-funktion til det. Hmm, måske man
skulle effektivisere den lidt - men pyt, det er jo småting den
arbejder på:


import java.util.*;

public class IpFusk {

  public static String zeroExtendIp(String ip) {
    StringTokenizer t = new StringTokenizer(ip,".");
    String s = "";
    while (t.hasMoreTokens()) {
      String d = t.nextToken();
      while (d.length()<3) { d="0"+d; }
      s=s+d;
      if (t.hasMoreTokens()) { s=s+"."; }
    }
    return s;
  }

  public static void main(String args[]) {
    System.out.println(zeroExtendIp("123.12.1.3"));
  }

}
Avatar billede disky Nybegynder
21. maj 2002 - 22:47 #16
ascii

istedet for at bøvle med padding af 0'er osv.

regn ip'erne om til hel tal på følgende måde

xxx.yyy.zzz.www

ip=www+zzz<<8+yyy<<16+xxx*256<<24

derefter kan du nemt gøre det i databasen
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