Java Mysql query database with connection -
thanks in advance help. creating database - client application using java in eclipse. using mysql 5.6 database. have method create , return connection object use querying database, , method return of rows in table json array. problem comes in query method when trying call connection method.
at: try{ con.getdbconnection(); telling me there error getdbconnection(); , suggestions gives add cast 'con'.
and can't query method compile main method.
package binaparts.dao; import java.sql.connection; import java.sql.preparedstatement; import java.sql.*; import org.json.jsonarray; import binaparts.util.tojson; public class returnallparts extends dbconnect{ public jsonarray queryreturnallparts() throws exception{ preparedstatement query = null; connection con = null; tojson converter = new tojson(); jsonarray json = new jsonarray(); try{ con.getdbconnection(); query = con.preparestatement("select * " + "from `parts list`" ); resultset rs = query.executequery(); json = converter.tojsonarray(rs); query.close(); }catch(sqlexception sqlex){ sqlex.printstacktrace(); }catch(exception ex){ ex.printstacktrace(); }finally{ if(con != null){ con.close(); } } return json; } } dao package code below:
package binaparts.dao; import java.sql.connection; import java.sql.databasemetadata; import java.sql.drivermanager; import java.sql.resultset; import java.sql.sqlexception; import java.sql.statement; import java.util.properties; import javax.naming.context; import javax.naming.initialcontext; import javax.sql.datasource; import com.mysql.jdbc.preparedstatement; public class dbconnect { private statement st = null; private resultset rs = null; private connection con = null; private preparedstatement pst = null; private string servername = "localhost"; private string portnumber = "3306"; private string dbms = "mysql"; private object username = "dwilson"; private object password = "abc"; public connection getdbconnection() throws sqlexception { properties connectionprops = new properties(); connectionprops.put("user", this.username); connectionprops.put("password", this.password); try{ con = drivermanager.getconnection("jdbc:" + this.dbms + "://" + this.servername + ":" + this.portnumber + "/", connectionprops); }catch(exception ex){ ex.printstacktrace(); con = null; }finally{ if(con != null){ system.out.println("connected database"); } } return con; } public string getuser(){ try{ databasemetadata dmd = con.getmetadata(); string username = dmd.getusername(); //system.out.println("current user: "+username); return username; }catch(exception ex){ system.out.println(ex); ex.printstacktrace(); return null; } } } main method below:
public class main{ public static void main(string[] args){ dbconnect con = new dbconnect(); try { con.getdbconnection(); system.out.println(con.getuser()); system.out.println(con.queryreturnallparts()); } catch (sqlexception e) { // todo auto-generated catch block e.printstacktrace(); } //login logingui = new login(); //mainframes m = new mainframes(); //m.displaygui(); } } the system.out.println(con.getuser()); work
in returnallparts#queryreturnallparts method, change
con.getdbconnection(); by
con = getdbconnection(); the problem con variable java.sql.connection , doesn't have getdbconnection method. since current returnallparts class extends dbconnect class, can access public connection getdbconnection method no problems.
the system.out.println(con.getuser()); work
this because in main#main class, have declared dbconnect con. not confuse variable con variable declared in other methods.
not directly related problem, suggest improvements current code/design:
- change name of
returnallpartsclass more meaningful future readers (even in days or weeks become in future reader of code). reading code, looks class should renamedpartlist. - use database connection pool instead of manually connections. there libraries handle bonecp
- probably you're new programming, better start in right way , develop application in layers (further reading: multitier architecture). basis, can dao (or data service, depends how name it) should contain methods access , retrieve data in way other clients consume want/need, better returning
list<partlist>object , layer in application (probably closest presentation) apply transformation objects json string. - for design point of view, way better if database access objects uses
dbconnectobject instead of extending it. in way, have singledbconnectobject per database connection configuration associated related daos.
Comments
Post a Comment