2012-12-09 36 views
-3

我有一个Java应用程序的问题,我请求你的帮助。我需要开发一个代码,其中根据提供的约束创建图表。这必须使用java中的BufferedImage的概念来完成。我已经在c:中存储了一个图像,但是无论我画的是什么,它都可能是一个简单的线条或圆圈等,在图像空间中不会显示任何图像。 我还有一个疑问,即可以使用相同的结果集来存储来自不同表格的数据。我无法解决出现的错误。 我的代码如下:Java应用程序问题

package diagram; 

import diagram.AB; 
import java.awt.*; 
import java.awt.image.*; 
import java.util.*; 
import java.sql.*; 
import java.io.*; 
import javax.swing.*; 
import java.sql.Timestamp; 
import javax.imageio.ImageIO; 

public class AB1 extends JPanel 
{ 
public static void main(String a[]) throws Exception 
{ 
    int ID,TC; 
    String FROM, TO, ATS, DTS, SOURCE, DSTN, TS, ST; 
    ResultSet rs; 

    ArrayList<AB> ab = new ArrayList<AB>(); 

    //DATABASE CONNECTION 

    String TrainNo = "12740"; 
    try 
    { 
    Class.forName("oracle.jdbc.driver.OracleDriver"); 
    String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe"; 
    Connection c = DriverManager.getConnection(url, "system", "akankshadas"); 

    // STORING TABLE IN RESULTSET 

    int rows = 0; 

    PreparedStatement st=c.prepareStatement("select * from MT_TRAIN_CONSIST where TRAIN_NUMBER = ? ORDER BY SERIAL_NUMBER"); 
    rs=st.executeQuery(); 

    PreparedStatement st1=c.prepareStatement("select * from MT_RAKE_TRAIN_LINK_MASTER where TRAIN_NUMBER = ? ORDER BY SERIAL_NUMBER"); 
    rs = st1.executeQuery(); 

    PreparedStatement st2=c.prepareStatement("select * from MT_SLIP_TRAIN_INFO where TRAIN_NUMBER = ? ORDER BY SERIAL_NUMBER "); 
    rs = st2.executeQuery(); 

    while(rs.next()) 
    { 

    ID = rs.getInt("ID_TRAIN_DEF"); 
    FROM = rs.getString("COACH_FROM"); 
    TO = rs.getString("COACH_TO"); 
    TC = rs.getInt("NUMBER_OF_COACHES"); 
    ATS = rs.getString("ATTACH_TRANSFER_STATION"); 
    DTS = rs.getString("DETACH_TRANSFER_STATION"); 
    SOURCE = rs.getString("TRAIN_SRC"); 
    DSTN = rs.getString("TRAIN_DSTN"); 
    TS = rs.getString("TRANSFER_STATION"); 
    ST = rs.getString("slip_type"); 

    AB obj = new AB(); 

    obj.id = ID; 
    obj.tc = TC; 
    obj.from = FROM; 
    obj.to = TO; 
    obj.ats = ATS; 
    obj.dts = DTS; 
    obj.src = SOURCE; 
    obj.dstn = DSTN; 
    obj.ts = TS; 
    obj.st = ST; 
    ab.add(obj); 

    rows++; 
    } 
} 

catch(Exception ex) 
{ 
    ex.printStackTrace(); 
} 

getImg(new FileOutputStream("C:\\A&B" + TrainNo + ".jpg"), ab); 
} 

public static void getImg(OutputStream out, ArrayList<AB> ab) throws IOException 
{ 
int imgWidth = 1024, imgHeight = 768; 

BufferedImage image = new BufferedImage(imgWidth,imgHeight, BufferedImage.TYPE_INT_ARGB); 
Graphics2D gx = image.createGraphics(); 
gx.setColor(Color.BLUE); 

gx.setColor(Color.BLACK); 
gx.drawLine(60,350,970,350); 
} 
} 

它的对象类是

package diagram; 

import java.awt.*; 
import java.awt.image.*; 
import java.awt.event.*; 
import java.util.*; 
import java.sql.*; 
import java.io.*; 
import javax.swing.*; 
import java.sql.Timestamp; 
import java.text.SimpleDateFormat; 
import javax.imageio.ImageIO; 

public class AB 
{ 
public String from, to, ats, dts, src, dstn, ts, st; 
public int id, tc; 

public static void main(String a[]) throws Exception 
{ 
BufferedImage image = new BufferedImage(500, 500, BufferedImage.TYPE_INT_ARGB); 

OutputStream out = new FileOutputStream("C:\\myImg.jpg"); 

ImageIO.write(image, "PNG", out); 
out.close(); 
} 

} 

的错误是

java.sql.SQLException: ORA-00904: "SERIAL_NUMBER": invalid identifier 

at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134) 
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289) 
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573) 
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1891) 
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteDescribe(TTC7Protocol.java:830) 
at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:2391) 
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2672) 
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:589) 
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:527) 
at diagram.AB1.main(AB1.java:39) 

我很感激所有帮助。我很久以来一直坚持这一点。 三江源

+3

StackOverflow不是在这里调试你的代码。请针对具体问题提出问题_。 –

回答

0

错误:

java.sql.SQLException: ORA-00904: "SERIAL_NUMBER": invalid identifier 
... 
at diagram.AB1.main(AB1.java:39) 

行:

PreparedStatement st1=c.prepareStatement("select * from MT_RAKE_TRAIN_LINK_MASTER where TRAIN_NUMBER = ? ORDER BY SERIAL_NUMBER"); 

哪些列在表(MT_RAKE_TRAIN_LINK_MASTER)?它是否有SERIAL_NUMBER列?

+0

不,它没有序列号列....它有一个主要的id_train_def列。每列火车都有一个唯一的号码,称为id_train_def –

+0

这就是为什么你会收到错误。您正在尝试通过不存在的SERIAL_NUMBER来排序数据。 – mcalex

+0

哦,是的,谢谢你..删除它,但仍然代码不工作 –

0

在这里您正在使用准备好的声明。

PreparedStatement st=c.prepareStatement("select * from 
MT_TRAIN_CONSIST where TRAIN_NUMBER = ? ORDER BY SERIAL_NUMBER"); 

st.setInt(1, 100);//enter your train number 

rs=st.executeQuery(); 

在执行PreparedStatement对象之前,您必须提供值代替问号占位符(如果有的话)。

+0

String TrainNo =“12740”;这个字符串通过代替问号。在这种情况下,值12740通过 –