Just nu i M3-nätverket
Gå till innehåll

Är det nån som vet?


Andy10

Rekommendera Poster

Jag har problem med min applikation..

Den består av två filer, Telefonregister.java och Person1.java samt access databas..

mieningen är att man ska söka i databasen..

Sökningen skall gå till så att man fyller i ett, två eler tre inmatningsfälten och sen klickar på sökknappen.Resultatet ska visas i textarea.

Mitt problem är, när man fyller i fälten och klickar då händer inte mycket, klickar man en gång till då listar den ut hela databasen. Är det nån som vet vad jag gör för fel? Här ligger mina koder..

 

import java.sql.*;

 

public class Person1 {

private String tnr;

private String fnamn;

private String enamn;

private static Connection conn = null;

 

Person1 (String t, String f, String e){

tnr = t;

fnamn = f;

enamn = e;

}

 

Person1 () { }

 

public void setTnr(String t) {

tnr = t;

}

 

public String getTnr() {

return tnr;

}

 

public void setFnamn(String f) {

fnamn = f;

}

 

public String getFnamn() {

return fnamn;

}

 

public void setEnamn(String e) {

enamn = e;

}

 

public String getEnamn() {

return enamn;

}

 

public static boolean connect() throws SQLException {

try {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

}

catch (Exception e) {

return false;

}

conn = DriverManager.getConnection

("jdbc:odbc:telefonregister","","");

if(conn == null)

return false;

else

return true;

}

// Ger blanksteg steg

private String steg(int antal) {

StringBuffer st = new StringBuffer();

for (int i=1; i<=antal; i++)

st.append(" ");

return st.toString();

}

 

public String sok() throws SQLException {

Statement stat = conn.createStatement();

ResultSet Rset;

String sqlsats = "SELECT * FROM telnr";

String soktest = "";

// Dynamisk sql sats

if(fnamn.length() > 0){

sqlsats += " WHERE fnamn='" + fnamn + "'";

if(enamn.length() > 0)

sqlsats += " AND enamn='" + enamn + "'";

 

if(tnr.length() > 0)

sqlsats += " AND tnr='" + tnr + "'";

 

}

else if(enamn.length() > 0){

sqlsats += " WHERE enamn='" + enamn + "'";

if(tnr.length() > 0)

sqlsats += " AND tnr='" + tnr + "'";

 

}

else if(tnr.length() > 0) {

sqlsats += " WHERE tnr='" + tnr + "'";

}

else {

sqlsats = sqlsats;

}

sqlsats += " ORDER BY fnamn, enamn";

 

Rset = stat.executeQuery(sqlsats);

 

// Resultatssträng resst

String resst = "";

while(Rset.next()){

resst = Rset.getString("fnamn");

soktest += resst;

soktest += steg(30-resst.length());

 

resst = Rset.getString("enamn");

soktest += resst;

soktest += steg(20-resst.length());

 

resst = Rset.getString("tnr");

soktest += resst;

soktest += "\n";

}

return soktest;

 

}

}

 

 

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.sql.*;

 

public class Telefonregister extends JFrame implements ActionListener {

 

JPanel p1 = new JPanel();

JPanel in = new JPanel(); // övre delen

JLabel fnamnFråga = new JLabel("Förnamn: ",JLabel.RIGHT);

JLabel enamnFråga = new JLabel("Efternamn: ", JLabel.RIGHT);

JLabel tnrFråga = new JLabel("Telnr: ", JLabel.RIGHT);

JTextField fnamnSvar = new JTextField(12);

JTextField enamnSvar = new JTextField(12);

JTextField tnrSvar = new JTextField(12);

 

JPanel knapp = new JPanel();

JButton s = new JButton("Sök!");

 

JPanel ut = new JPanel();// nedre halva

JLabel ftext = new JLabel("Förnamn: Efternamn: Telnr: ",JLabel.LEFT);

JTextArea res = new JTextArea(5,5);

JScrollPane sp = new JScrollPane(res,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,

JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

 

Telefonregister() { // Konstruktor

Container c = getContentPane(); // skapar behållare

c.setLayout(new BorderLayout());

c.add(p1,BorderLayout.NORTH);

c.add(ut,BorderLayout.CENTER);

res.setEditable(false);

p1.setLayout(new FlowLayout());

p1.add(in);

p1.add(knapp);

in.setLayout(new GridLayout(3,2));

in.add(fnamnFråga);

in.add(fnamnSvar);

in.add(enamnFråga);

in.add(enamnSvar);

in.add(tnrFråga);

in.add(tnrSvar);

knapp.add(s);

// kopplar ihop formulären

fnamnFråga.setLabelFor(fnamnSvar);

enamnFråga.setLabelFor(enamnSvar);

tnrFråga.setLabelFor(tnrSvar);

// Anger kortkommandon

fnamnFråga.setDisplayedMnemonic('F');

enamnFråga.setDisplayedMnemonic('E');

tnrFråga.setDisplayedMnemonic('T');

 

ut.setLayout(new BorderLayout());

ut.add(ftext,BorderLayout.NORTH);

ut.add(sp,BorderLayout.CENTER);

 

s.addActionListener(this);

setVisible(true);

pack();

setDefaultCloseOperation(EXIT_ON_CLOSE);

 

try {

Person1.connect();

}

catch (SQLException e) {

System.err.println(e.getMessage());

getToolkit().beep();

System.err.println("Kan ej ansluta till databasen. Avslutar...");

System.exit(1);

}

}

void findButton_Clicked() {

try {

String f, e, t;

f = fnamnSvar.getText();

e = enamnSvar.getText();

t = tnrSvar.getText();

 

Person1 p1 = new Person1(f, e, t);

 

fnamnSvar.setText("");

enamnSvar.setText("");

tnrSvar.setText("");

 

res.setText(p1.sok());

}

catch (SQLException sqle) {

res.setText("Sökningen misslyckades, prova igen...");

fnamnSvar.setText("");

enamnSvar.setText("");

tnrSvar.setText("");

System.err.println(sqle.getMessage());

}

}

 

public void actionPerformed(ActionEvent händelse) {

Object object = händelse.getSource();

if (object == s) {

findButton_Clicked();

}

}

 

public static void main (String[] arg) {

new Telefonregister();

}

}

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...