Avatar billede couldwork Nybegynder
03. august 2004 - 23:26 Der er 13 kommentarer og
1 løsning

Sql Server ASP

Er det muligt at sende en sql-sætning til en ASP side ved brug
af java og modtage resultatet.

Kender stort set intet til ASP, er dog lykkedes mig at fremstille en side som connecter til SQL Serveren

<%
Dim conn
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Provider=SQLOLEDB; Data Source = (local); Initial Catalog = MyDb;User Id = SystemAdmin; Password = Easy"
If conn.errors.count = 0 Then
    Response.Write "Connected OK"
End If
%>

Herefter er jeg gået total kold, både på ASP og java delen

Men kan man
  String query = "SELECT * FROM KundeTabel ORDER BY Kundenr";
og sende 'query' til ASP siden og få fat i resultatet
Avatar billede arne_v Ekspert
03. august 2004 - 23:27 #1
Ja.

Jeg har engang lavet et eksempel på dette.

Jeg finder det lige frem.
Avatar billede arne_v Ekspert
03. august 2004 - 23:29 #2
select.asp:

<%
Set con = Server.CreateObject("ADODB.Connection")
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Database\MSAccess\Test.mdb;User Id=admin;Password=;"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM T1",con
Do While Not rs.EOF
%>
<%=rs("F1")%> <%=rs("F2")%><br>
<%
rs.MoveNext
Loop
Set rs = Nothing
Set con = Nothing
%>

insert.asp:

<%
Set con = Server.CreateObject("ADODB.Connection")
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Database\MSAccess\Test.mdb;User Id=admin;Password=;"
con.Execute "INSERT INTO T1(F1,F2) VALUES(" & Request.Form("F1") & ",'" & Request.Form("F2") & "')"
Set con = Nothing
%>

DatabaseApplet.java:

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.io.*;
import java.net.*;

public class DatabaseApplet extends Applet implements ActionListener {
    TextArea select = new TextArea();
    TextField f1 = new TextField();
    TextField f2 = new TextField();
    Button insert = new Button();
    public void init() {
        select.setColumns(40);
        select.setRows(20);
        select.setText(select());
        f1.setColumns(10);
        f2.setColumns(20);
        insert.setLabel("Add");
        insert.addActionListener(this);
        add(select, null);
        add(f1, null);
        add(f2, null);
        add(insert, null);
        setVisible(true);
    }
    public void actionPerformed(ActionEvent ev) {
        insert(f1.getText(), f2.getText());
        select.setText(select());
        repaint();
    }
    private String select() {
        StringBuffer res = new StringBuffer("");
        try {
            URL url = new URL("http://localhost/select.asp");
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            con.setRequestMethod("GET");
            con.connect();
            if (con.getResponseCode() == HttpURLConnection.HTTP_OK) {
                BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
                String line;
                while ( (line = br.readLine()) != null) {
                    res.append(line);
                    res.append("\r\n");
                }
                con.disconnect();
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        return res.toString();
    }
    private void insert(String f1, String f2) {
        try {
            URL url = new URL("http://localhost/insert.asp");
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            con.setRequestMethod("POST");
            String info = "F1=" + f1 + "&F2=" + f2;
            con.setDoOutput(true);
            con.getOutputStream().write(info.getBytes());
            con.connect();
            if (con.getResponseCode() != HttpURLConnection.HTTP_OK) {
                System.err.println("POST failed");
            }
            con.disconnect();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}
Avatar billede arne_v Ekspert
03. august 2004 - 23:30 #3
Eksemplet er med Access så du skal ændre connection string til SQL server, men
den har du jo allerede fundet ud af.

Java koden er en applet. Jeg ved ikke om din kode også er en applet, men
princippet er det samme uanset om det er en applet eller en applikation.
Avatar billede arne_v Ekspert
03. august 2004 - 23:43 #4
Jeg kommer lidt i tvivl om jeg har forstået problemet rigtigt.

Vil sende selve SQL query strengen fra Java til ASP siden ?

I så fald må du skulle:

rs.Open Request.Form("sql") ,con

på ASP siden og:

            con.setRequestMethod("POST");
            String info = "sql=" + URLEncoder.encode("SELECT * FROM T1");
            con.setDoOutput(true);
            con.getOutputStream().write(info.getBytes());
            con.connect();
           
på Java siden.
Avatar billede arne_v Ekspert
03. august 2004 - 23:45 #5
Jeg håber det i det mindste har givet nogle ideer.

Jeg tror at det største problem ved at sende SQL over fra Java tiL ASP
er at ASP vil have meget svært ved at formatere output og Java vil
have meget svært ved at parse output, fordi de ikke ved hvilke
kolonner der er i resultatet. Derfor kan en ASP side per query måske
være mere praktisk.
Avatar billede couldwork Nybegynder
03. august 2004 - 23:46 #6
Det var godt nok hurtigt !!

Jeg vender tilbage i morgen, skal lige have kigget lidt på det, har lidt svært ved at gennemskue den dersens ASP ting.

pt er min kode applikation, men ender nok som applet.
Men tusind tak indtil videre :-) !!
Avatar billede couldwork Nybegynder
03. august 2004 - 23:51 #7
Mht: 03/08-2004 23:43:01
Ja det var planen, men kan god se problemet.

Alternativet er vel en JDBC driver, men en gratis driver hænger vel ikke på træerne, når vi snakker MS SQL Server
Avatar billede arne_v Ekspert
04. august 2004 - 06:57 #8
applet => så er du ofte nødt til at gå den vej

applikation => så er du sjældende nødt til at gå denne vej
Avatar billede arne_v Ekspert
04. august 2004 - 06:58 #9
Du kan downloade en gratis JDBC driver fra Microsoft !
Avatar billede arne_v Ekspert
04. august 2004 - 07:00 #11
Alternativ:
  http://www.freetds.org/
Avatar billede couldwork Nybegynder
04. august 2004 - 11:52 #12
Har ikke haft tid til at kigge på det endnu, men kan du uddybe din kom.: 04/08-2004 06:57:42

Jeg er ikke helt med på hvad du mener mht. hvilken vej i hvilket tilfælde.
Avatar billede arne_v Ekspert
04. august 2004 - 13:43 #13
En applet har sjældent (fordi den kører på internet) lov til at connecte
direkte til en database og derfor er et server side script ofte nødvendigt.

En normal applikation har ofte (fordi den køres på intranet) lov til at
connecte direkte til databasen og så er et server side script bare en
unødig komplikation.

Der er undtagelser til begge regler.
Avatar billede couldwork Nybegynder
04. august 2004 - 13:51 #14
Kanon!

Tak - nu har jeg noget at arbejde videre med.

Tak for hjælpen :-)
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