13. februar 2006 - 21:06Der er
27 kommentarer og 1 løsning
Problemer med SQL i JAVA
Jeg har nu lavet SQL sætninger som bruger data fra mit java program og skriver det pæn og flot ind i min database men jeg kan af en eller anden grund ikke hente data fra min database med SQL sætninger, hjælp!
Til oplysning så er det en ACCESS database.
det skulle gerne være den her kode som skulle hente et navn ud af min database. Men den sender ikke noget resultet retur
String SQL= "SELECT DISTINCT G2O.Navn FROM G2O WHERE G2O.Navn="+res+";";
ResultSet rs = s.executeQuery(SQL); System.out.println(SQL); //udskriv den udførte sql-sætning på konsollen så den evt. kan kontrolleres while (rs.next()) { ny2 += rs.getString("Navn"); } } catch(Exception ex){System.out.println(ex);} return ny2; }
Det er underligt da denne stump kode virker fint, og de er næsten ens:
String SQL= "SELECT TOP 1 OpticAll.oID FROM OpticAll ORDER BY OpticAll.oID DESC;";
ResultSet rs = s.executeQuery(SQL); System.out.println(SQL); //udskriv den udførte sql-sætning på konsollen så den evt. kan kontrolleres while (rs.next()) { ny += rs.getInt("oID"); } } catch(Exception ex){System.out.println(ex);} return ny; }
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
private void jButton1MousePressed(java.awt.event.MouseEvent evt) { SupportDB SDB = new SupportDB(con); //skaber forbindelse til databaseklasse res = SDB.kunde("ole"); //Sender ole som herefter sættes ind i SQL sætningen ResultatListe.add(res); //List
String SQL= "SELECT DISTINCT G2O.Navn FROM G2O WHERE G2O.Navn='"+sog+"'";
ResultSet rs = s.executeQuery(SQL); System.out.println(SQL); //udskriv den udførte sql-sætning på konsollen så den evt. kan kontrolleres while (rs.next()) { ny2 += rs.getInt(""); } } catch(Exception ex){System.out.println(ex);} return ny2; }
nej og jeg har lavet et program før hvor det virkede og når jeg køre min SQL sætning i ACCESS kommer den fint frem med resultatet, det er super underligt
I kan lige få hele koden, det kan være det hjælper:
import java.sql.*;
public class SupportDB { private Connection con; //databaseforbindelses-objektet int ny, i=0, p=0; String[] resultat = new String[1000]; String[] test = new String[1000]; String ny2;
public SupportDB(Connection con) { this.con= con; //overfør den modtagne databaseforbindelse }
String SQL= "SELECT TOP 1 G2O.sID FROM G2O ORDER BY G2O.sID DESC;";
ResultSet rs = s.executeQuery(SQL); System.out.println(SQL); //udskriv den udførte sql-sætning på konsollen så den evt. kan kontrolleres while (rs.next()) { ny += rs.getInt("sID"); } } catch(Exception ex){System.out.println(ex);} return ny; } public int top2() {
String SQL= "SELECT TOP 1 OpticAll.oID FROM OpticAll ORDER BY OpticAll.oID DESC;";
ResultSet rs = s.executeQuery(SQL); System.out.println(SQL); //udskriv den udførte sql-sætning på konsollen så den evt. kan kontrolleres while (rs.next()) { ny += rs.getInt("oID"); } } catch(Exception ex){System.out.println(ex);} return ny; } public String kunde(String sog) {
String SQL= "SELECT DISTINCT G2O.Navn FROM G2O WHERE G2O.Navn='"+sog+"';";
ResultSet rs = s.executeQuery(SQL); System.out.println(SQL); //udskriv den udførte sql-sætning på konsollen så den evt. kan kontrolleres while (rs.next()) { ny2 = rs.getString("Navn"); } } catch(Exception ex){System.out.println(ex);} return ny2; } public void afslut() //pre: //post: lukker forbindelsen til databasen { try { con.close(); } catch(Exception ex){System.out.println(ex);} }
}
import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; import java.util.*; import java.io.IOException; /* * FindProblem.java * * Created on 10. februar 2006, 18:42 */
/** * * @author ktj */ public class FindProblem extends javax.swing.JFrame { static Connection con; String[] resultat = new String[1000]; String test="ole"; String res; /** Creates new form FindProblem */ public FindProblem() { initComponents(); }
/** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() { jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jButton1 = new javax.swing.JButton(); find = new javax.swing.JTextField(); jLabel4 = new javax.swing.JLabel(); jCheckBox1 = new javax.swing.JCheckBox(); jCheckBox2 = new javax.swing.JCheckBox(); jCheckBox3 = new javax.swing.JCheckBox(); jCheckBox4 = new javax.swing.JCheckBox(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); jTextField2 = new javax.swing.JTextField(); textArea2 = new java.awt.TextArea(); textArea3 = new java.awt.TextArea(); jLabel8 = new javax.swing.JLabel(); choice1 = new java.awt.Choice(); choice2 = new java.awt.Choice(); jLabel9 = new javax.swing.JLabel(); choice3 = new java.awt.Choice(); jLabel10 = new javax.swing.JLabel(); jLabel11 = new javax.swing.JLabel(); jLabel12 = new javax.swing.JLabel(); choice4 = new java.awt.Choice(); choice5 = new java.awt.Choice(); choice6 = new java.awt.Choice(); ResultatListe = new java.awt.List();
getContentPane().setLayout(null);
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Find kendt problem"); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { exitForm(evt); } });
jLabel1.setFont(new java.awt.Font("Rockwell Extra Bold", 3, 18)); jLabel1.setText("S\u00f8g efter problem i databasen"); getContentPane().add(jLabel1); jLabel1.setBounds(160, 10, 330, 22);
jCheckBox1.setFont(new java.awt.Font("Dialog", 0, 12)); jCheckBox1.setText("Kryds af hvis du \u00f8nsker at s\u00f8ge inden for alle kategorier"); getContentPane().add(jCheckBox1); jCheckBox1.setBounds(20, 210, 328, 24);
ResultSet rs = s.executeQuery(SQL); System.out.println(SQL); //udskriv den udførte sql-sætning på konsollen så den evt. kan kontrolleres while (rs.next()) { ny2 = rs.getString("Navn"); }
til:
ResultSet rs = s.executeQuery(SQL); System.out.println(SQL); //udskriv den udførte sql-sætning på konsollen så den evt. kan kontrolleres ny2 = ""; while (rs.next()) { ny2 += rs.getString("Navn"); }
virker stadigvæk ikke, men jeg prøver lige at lave en ny database og ser om der skulle være noget galt der selvom det ikke burde være det! Men ser først på det når jeg tager på arbejde kl. 16.00...men i har været meget hjælpsomme
String SQL= "SELECT DISTINCT G2O.Navn FROM G2O WHERE G2O.Navn='"+sog+"';";
ResultSet rs = s.executeQuery(SQL); System.out.println(SQL); //udskriv den udførte sql-sætning på konsollen så den evt. kan kontrolleres ny2 = ""; while (rs.next()) { ny2 += rs.getString("Navn"); }
Det var derfor jeg i min første kommentar spurgte om vi måtte se hele fejlkoden, der står nemlig i 95 % af alle tilfælde mere end bare java.lang.NullPointerException.
Jeg ved det godt carsten og jeg sendte den også og det var i denne her del af koden det manglede...
import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; import java.util.*; import java.io.IOException; /* * FindProblem.java * * Created on 10. februar 2006, 18:42 */
/** * * @author ktj */ public class FindProblem extends javax.swing.JFrame { static Connection con; String[] resultat = new String[1000]; String test="ole"; String res; /** Creates new form FindProblem */ public FindProblem() { initComponents(); }
/** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() { jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jButton1 = new javax.swing.JButton(); find = new javax.swing.JTextField(); jLabel4 = new javax.swing.JLabel(); jCheckBox1 = new javax.swing.JCheckBox(); jCheckBox2 = new javax.swing.JCheckBox(); jCheckBox3 = new javax.swing.JCheckBox(); jCheckBox4 = new javax.swing.JCheckBox(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); jTextField2 = new javax.swing.JTextField(); textArea2 = new java.awt.TextArea(); textArea3 = new java.awt.TextArea(); jLabel8 = new javax.swing.JLabel(); choice1 = new java.awt.Choice(); choice2 = new java.awt.Choice(); jLabel9 = new javax.swing.JLabel(); choice3 = new java.awt.Choice(); jLabel10 = new javax.swing.JLabel(); jLabel11 = new javax.swing.JLabel(); jLabel12 = new javax.swing.JLabel(); choice4 = new java.awt.Choice(); choice5 = new java.awt.Choice(); choice6 = new java.awt.Choice(); ResultatListe = new java.awt.List();
getContentPane().setLayout(null);
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Find kendt problem"); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { exitForm(evt); } });
jLabel1.setFont(new java.awt.Font("Rockwell Extra Bold", 3, 18)); jLabel1.setText("S\u00f8g efter problem i databasen"); getContentPane().add(jLabel1); jLabel1.setBounds(160, 10, 330, 22);
jCheckBox1.setFont(new java.awt.Font("Dialog", 0, 12)); jCheckBox1.setText("Kryds af hvis du \u00f8nsker at s\u00f8ge inden for alle kategorier"); getContentPane().add(jCheckBox1); jCheckBox1.setBounds(20, 210, 328, 24);
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.