Avatar billede sarge Nybegynder
14. december 2001 - 20:07 Der er 4 kommentarer og
1 løsning

Hvordan indsætte man ¨data fra en jsp form til en data base

Jeg har et problem med et skod projekt som jeg skal aflevere om en uge. Det hele fungere men jeg skal have en side hvor jeg kan indsætte nogle data fra en form hvorefter når man har sendt den så bliver sat ind i en tabel i Access jeg har kun formået at trække data ud hvilket efter min mening da jeg ikke er en programmeringsnørd men jeg ved at jeg skal bruge en SQL Insert sætning  indtil har jeg lavet dette så kan folk se om det visuelt hvis de vil

her kommer koden da jeg ikke ved at der vigtigt:



<%@page contentType=\"text/html; charset=iso-8859-1\" language=\"java\" import=\"java.sql.*\"%>
<%@ include file=\"Connections/ComPlay.jsp\" %>
<%
// *** Edit Operations: declare variables

// set the form action variable
String MM_editAction = request.getRequestURI();
if (request.getQueryString() != null && request.getQueryString().length() > 0) {
  MM_editAction += \"?\" + request.getQueryString();
}

// connection information
String MM_editDriver = null, MM_editConnection = null, MM_editUserName = null, MM_editPassword = null;

// redirect information
String MM_editRedirectUrl = null;

// query string to execute
StringBuffer MM_editQuery = null;

// boolean to abort record edit
boolean MM_abortEdit = false;

// table information
String MM_editTable = null, MM_editColumn = null, MM_recordId = null;

// form field information
String[] MM_fields = null, MM_columns = null;
%>
<%
// *** Insert Record: set variables

if (request.getParameter(\"MM_insert\") != null) {

  MM_editDriver    = MM_ComPlay_DRIVER;
  MM_editConnection = MM_ComPlay_STRING;
  MM_editUserName  = MM_ComPlay_USERNAME;
  MM_editPassword  = MM_ComPlay_PASSWORD;
  MM_editTable  = \"Kunde\";
  MM_editRedirectUrl = \"bekraeftelse.htm\";
  String MM_fieldsStr = \"FNavn|value|ENavn|value|Gade|value|Nummer|value|Postnumer|value|By|value|Tlf|value|EMail|value\";
  String MM_columnsStr = \"FNavn|\',none,\'\'|ENavn|\',none,\'\'|Gade|\',none,\'\'|Nummer|none,none,NULL|PostNummer|none,none,NULL|By|\',none,\'\'|Tlf|none,none,NULL|Email|\',none,\'\'\";

  // create the MM_fields and MM_columns arrays
  java.util.StringTokenizer tokens = new java.util.StringTokenizer(MM_fieldsStr,\"|\");
  MM_fields = new String[tokens.countTokens()];
  for (int i=0; tokens.hasMoreTokens(); i++) MM_fields[i] = tokens.nextToken();

  tokens = new java.util.StringTokenizer(MM_columnsStr,\"|\");
  MM_columns = new String[tokens.countTokens()];
  for (int i=0; tokens.hasMoreTokens(); i++) MM_columns[i] = tokens.nextToken();

  // set the form values
  for (int i=0; i+1 < MM_fields.length; i+=2) {
    MM_fields[i+1] = ((request.getParameter(MM_fields[i])!=null)?(String)request.getParameter(MM_fields[i]):\"\");
  }

  // append the query string to the redirect URL
  if (MM_editRedirectUrl.length() != 0 && request.getQueryString() != null) {
    MM_editRedirectUrl += ((MM_editRedirectUrl.indexOf(\'?\') == -1)?\"?\":\"&\") + request.getQueryString();
  }
}
%>
<%
// *** Insert Record: construct a sql insert statement and execute it

if (request.getParameter(\"MM_insert\") != null) {

  // create the insert sql statement
  StringBuffer MM_tableValues = new StringBuffer(), MM_dbValues = new StringBuffer();
  for (int i=0; i+1 < MM_fields.length; i+=2) {
    String formVal = MM_fields[i+1];
    String elem;
    java.util.StringTokenizer tokens = new java.util.StringTokenizer(MM_columns[i+1],\",\");
    String delim    = ((elem = (String)tokens.nextToken()) != null && elem.compareTo(\"none\")!=0)?elem:\"\";
    String altVal  = ((elem = (String)tokens.nextToken()) != null && elem.compareTo(\"none\")!=0)?elem:\"\";
    String emptyVal = ((elem = (String)tokens.nextToken()) != null && elem.compareTo(\"none\")!=0)?elem:\"\";
    if (formVal.length() == 0) {
      formVal = emptyVal;
    } else {
      if (altVal.length() != 0) {
        formVal = altVal;
      } else if (delim.compareTo(\"\'\") == 0) {  // escape quotes
        StringBuffer escQuotes = new StringBuffer(formVal);
        for (int j=0; j < escQuotes.length(); j++)
          if (escQuotes.charAt(j) == \'\\\'\') escQuotes.insert(j++,\'\\\'\');
        formVal = \"\'\" + escQuotes + \"\'\";
      } else {
        formVal = delim + formVal + delim;
      }
    }
    MM_tableValues.append((i!=0)?\",\":\"\").append(MM_columns[i]);
    MM_dbValues.append((i!=0)?\",\":\"\").append(formVal);
  }
  MM_editQuery = new StringBuffer(\"insert into \" + MM_editTable);
  MM_editQuery.append(\" (\").append(MM_tableValues.toString()).append(\") values (\");
  MM_editQuery.append(MM_dbValues.toString()).append(\")\");
 
  if (!MM_abortEdit) {
    // finish the sql and execute it
    Driver MM_driver = (Driver)Class.forName(MM_editDriver).newInstance();
    Connection MM_connection = DriverManager.getConnection(MM_editConnection,MM_editUserName,MM_editPassword);
    PreparedStatement MM_editStatement = MM_connection.prepareStatement(MM_editQuery.toString());
    MM_editStatement.executeUpdate();
    MM_connection.close();

    // redirect with URL parameters
    if (MM_editRedirectUrl.length() != 0) {
      response.sendRedirect(response.encodeRedirectURL(MM_editRedirectUrl));
    }
  }
}
%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
</head>
<body bgcolor=\"#FFFFFF\" text=\"#000000\">
<table width=\"600\" border=\"0\" align=\"left\" background=\"explosion2.jpg\">
  <tr>
    <td height=\"408\" bg=fixed>
      <form ACTION=\"<%=MM_editAction%>\" METHOD=\"POST\" name=\"bestil\">
        <table width=\"90%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
          <tr>
            <td colspan=\"2\">
              <div align=\"center\"><b><font face=\"Arial, Helvetica, sans-serif\">Du
                har bestilt f&oslash;lgende spil:</font></b></div>
            </td>
          </tr>
          <tr>
            <td colspan=\"2\">
              <div align=\"center\"><b><font face=\"Arial, Helvetica, sans-serif\"></font></b></div>
            </td>
          </tr>
          <tr>
            <td colspan=\"2\">
              <div align=\"center\"><b><font face=\"Arial, Helvetica, sans-serif\">Indtast
                dine personlige oplysninger</font></b></div>
            </td>
          </tr>
          <tr>
            <td width=\"19%\">
              <div align=\"left\"><font face=\"Arial, Helvetica, sans-serif\">Fornavn</font></div>
            </td>
            <td width=\"81%\">
              <input type=\"text\" name=\"FNavn\">
            </td>
          </tr>
          <tr>
            <td width=\"19%\">
              <div align=\"left\"><font face=\"Arial, Helvetica, sans-serif\">Efternavn</font></div>
            </td>
            <td width=\"81%\">
              <input type=\"text\" name=\"ENavn\">
            </td>
          </tr>
          <tr>
            <td width=\"19%\">
              <div align=\"left\"><font face=\"Arial, Helvetica, sans-serif\">Gade</font></div>
            </td>
            <td width=\"81%\">
              <input type=\"text\" name=\"Gade\">
            </td>
          </tr>
          <tr>
            <td width=\"19%\">
              <div align=\"left\"><font face=\"Arial, Helvetica, sans-serif\">Nummer</font></div>
            </td>
            <td width=\"81%\">
              <input type=\"text\" name=\"Nummer\">
            </td>
          </tr>
          <tr>
            <td width=\"19%\">
              <div align=\"left\"><font face=\"Arial, Helvetica, sans-serif\">Postnummer</font></div>
            </td>
            <td width=\"81%\">
              <input type=\"text\" name=\"Postnumer\">
            </td>
          </tr>
          <tr>
            <td width=\"19%\">
              <div align=\"left\"><font face=\"Arial, Helvetica, sans-serif\">By</font></div>
            </td>
            <td width=\"81%\">
              <input type=\"text\" name=\"By\">
            </td>
          </tr>
          <tr>
            <td width=\"19%\">
              <div align=\"left\"><font face=\"Arial, Helvetica, sans-serif\">Tlf.</font></div>
            </td>
            <td width=\"81%\">
              <input type=\"text\" name=\"Tlf\">
            </td>
          </tr>
          <tr>
            <td width=\"19%\">
              <div align=\"left\"><font face=\"Arial, Helvetica, sans-serif\">E-Mail</font></div>
            </td>
            <td width=\"81%\">
              <input type=\"text\" name=\"EMail\">
            </td>
          </tr>
          <tr>
            <td width=\"19%\">
              <input type=\"submit\" name=\"Send\" value=\"Send\">
            </td>
            <td width=\"81%\">
              <input type=\"reset\" name=\"Fortryd\" value=\"Fortryd\">
            </td>
          </tr>
        </table>
        <p>&nbsp;</p>
        <input type=\"hidden\" name=\"MM_insert\" value=\"true\">
      </form>
    </td>
  </tr>
  <tr>
    <td height=\"2\">
      <div align=\"center\"><i>Alle rettigheder er forbeholdt af Complay I/S</i></div>
    </td>
  </tr>
</table>
</body>
</html>

Avatar billede disky Nybegynder
16. december 2001 - 12:35 #1
det er en svært overskuelig kode du har lavet, lidt tomme linier inde i koden vill hjælpe.

Og det er ikke en god ting at have funktionalitet i en jsp side.


Men syntaxen for en insert er:

insert into TABELNAVN (DATA1, DATA2, DATA3) values(VALUE1, VALUE2, VALUE3)

Hvor:

TABELNAVN er navnet på den tabel du vil have data ind i.

DATA1-DATA3 er navnet på x antal kolonner du ønsker at gemme data i.

VALUE1-VALUE3 er den værdi du ønsker at smide i de kolonner. (Husk strenge osv skal der \'\' rundt om.

f.eks.

insert into VENNER (NAVN,TELEFON,ALDER) value (\'Hans Hansen\',12345678,87)


Avatar billede sarge Nybegynder
17. december 2001 - 13:54 #2
ok den her er nemmere men jeg kan stadig ikke få det til at fungere men jeg ved godt hvordan de sættes ind i tabeller men hvad med det her

<%@page import=\"java.sql.*\"%>

<% Class.forName(\"sun.jdbc.odbc.JdbcOdbcDriver\");
Connection con = DriverManager.getConnection(\"jdbc:odbc:ComPlay\");
Statement stmt = con.createStatement();
%>

<% //hvis der er trykket submit, så indsæt række
String FNavn=request.getString(\"FNavn\");
String ENavn=request.getString(\"ENavn\");
String Gade=request.getString(\"Gade\");
Int  Nummer=request.getInt(\"Nummer\");
Int PostNummer=request.getInt(\"PostNummer\");
String By=request.getString(\"By\");
Int Tlf=request.getInt(\"Tlf\");
String Email=request.getString(\"Email\");

// string.getAttribute //

if(FNavn!=null){

int result=stmt.executeUpdate(\"INSERT INTO Kunde (FNavn,ENavn,Gade,Nummer,PostNummer,By,Tlf,Email) values(\'\"+FNavn+\"\',\'\"+ENavn+\"\',\'\"+Gade+\"\',\'\"+Nummer+\"\',\'\"+PostNummer+\"\',\'\"+By+\"\',\'\"+Tlf+\"\',\'\"+Email+\"\'); \");
  if(result!=1) { //Noget gik galt
    throw new Exception(\"Noget gik galt i indsæt\");
} //andet end en række
} //indsæt
Avatar billede disky Nybegynder
17. december 2001 - 14:02 #3
byt
int result=stmt.executeUpdate(\"INSERT INTO Kunde (FNavn,ENavn,Gade,Nummer,PostNummer,By,Tlf,Email) values(\'\"+FNavn+\"\',\'\"+ENavn+\"\',\'\"+Gade+\"\',\'\"+Nummer+\"\',\'\"+PostNummer+\"\',\'\"+By+\"\',\'\"+Tlf+\"\',\'\"+Email+\"\'); \");
 

ud med

int result=stmt.executeUpdate(\"INSERT INTO Kunde (FNavn,ENavn,Gade,Nummer,PostNummer,By,Tlf,Email) values(\'\"+FNavn+\"\',\'\"+ENavn+\"\',\'\"+Gade+\"\',\'\"+Nummer+\"\',\'\"+PostNummer+\"\',\'\"+By+\"\',\'\"+Tlf+\"\',\'\"+Email+\"\')\");
 

og det kan give problemmer at du har en kolonne der hedder \'BY\' da det er et reserveret ord i SQL
Avatar billede sarge Nybegynder
17. december 2001 - 15:56 #4
vi lukker spørgmålet og da det næsten er det samme som bliver spurgt på
genrel progrmamering
Avatar billede disky Nybegynder
17. december 2001 - 15:59 #5
øv jeg ville da hellere have haft 200 end 60 :-)
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