Avatar billede lifo Nybegynder
20. oktober 2004 - 01:53 Der er 3 kommentarer og
1 løsning

generere en sql søge sætning

før jeg går i krig med det selv
så ville jeg lige spørge om der var nogen der havde eller vidste om en metode som kan tage en string og lave en "sql where" søge string

altså
funktionen får en streng og colonne navn som input parameter
og spytter en where string ud

et simpel eksempel
metode kald  = soeg("eksperten",minColonne)
output = "where minColonne like '%eksperten%'"

skulle gærne være så intelegent at input stringen skal kuknne indholde flere kriterier stringe
samt om en string med - forand så skal den ikke komme med

skal helst være laveet i C# eller Java
Avatar billede simonvalter Praktikant
20. oktober 2004 - 02:39 #1
hvis du vil have metoder til at genere sql for dig findes der løsninger til det

f.eks
http://rifers.org/

der er sikkert massere af andre simplere løsninger men kunne ikke lige komme på en.

brugen af et kunne f.eks se sådan her ud
import com.uwyn.rife.database*;
...
CreateTable sCreateTableFaq = new CreateTable(getDatasource());
            sCreateTableFaq
                .table("Faq")
                .columns(Faqclass.class)
                .column("somecolumn", String.class, 30, CreateTable.NOTNULL)
                .primaryKey("FAQ_PK", "id");


Select    sGetFaq = new Select(getDatasource());
            sGetFaq
                .from("Faq")
                .field("*")
                .whereParameter("id", "=");
Avatar billede arne_v Ekspert
20. oktober 2004 - 08:35 #2
Lidt inspiration.

C#:

using System;
using System.Text;

class SqlClass
{
    public static string GenWhere(params object[] args)
    {
        StringBuilder sb = new StringBuilder();
        sb.Append("WHERE");
        for(int i = 0; i < args.Length/2; i++)
        {
            if(i > 0)
            {
                sb.Append(" AND");
            }
            sb.Append(" ");
            sb.Append(args[2*i]);
            sb.Append("=");
            bool isstring = args[2*i+1].GetType().Name.Equals("String");
            if(isstring)
            {
                sb.Append("'");
            }
            sb.Append(args[2*i+1]);
            if(isstring)
            {
                sb.Append("'");
            }
        }
        return sb.ToString();
    }
    public static void Main(string[] args)
    {
        Console.WriteLine(GenWhere("F1", 123, "F2", "ABC"));
    }
}

Java (KRÆVER JAVA 1.5 / 5 !!!!):

public class SqlClass {
    public static String genWhere(Object ... args) {
        StringBuffer sb = new StringBuffer();
        sb.append("WHERE");
        for(int i = 0; i < args.length/2; i++) {
            if(i > 0) {
                sb.append(" AND");
            }
            sb.append(" ");
            sb.append(args[2*i]);
            sb.append("=");
            boolean isstring = args[2*i+1].getClass().getName().equals("java.lang.String");
            if(isstring) {
                sb.append("'");
            }
            sb.append(args[2*i+1]);
            if(isstring)
            {
                sb.append("'");
            }
        }
        return sb.toString();
    }
    public static void main(String[] args)
    {
        System.out.println(genWhere("F1", 123, "F2", "ABC"));
    }
}
Avatar billede lifo Nybegynder
04. november 2004 - 09:19 #3
hmm jer er lidt sent på den 

men arne det er noget i den retning jeg mente med
så smid et svar for lidt inspiration
Avatar billede arne_v Ekspert
04. november 2004 - 16:32 #4
kommer her
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
Computerworld tilbyder specialiserede kurser i database-management

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