我正在为一个项目制作一个在线食品订购系统,但我还是java新手。我有两节课。 Signin.java和其他是mextable.java。我正在尝试访问textfield(signin.java的一部分),从Mextable.java读取那个值并将该值插入MexTable.java中的表中。
我能够从signin.java中的JTextField
读取值。我也可以获取该数据并将其插入同一类signin.java中的表login
。
所以我的问题是我如何在不同的班级做同样的事情?意味着读取并将用户名(在signin.java中的JTextField
中输入)插入表orders
(它是Mextable.java的一部分)?
Signin.java代码(我只添加了代码的主要部分):
public class signin extends javax.swing.JFrame {
Connection conn;
OracleResultSet rs = null;
OraclePreparedStatement pst;
public signin() {
initComponents();
connect();
}
public void connect()
{
// connection with database
}
private void loginActionPerformed(java.awt.event.ActionEvent evt) {
protected static javax.swing.JTexfield userTF;
try{
String pass = passTF.getText().trim();
String user = userTF.getText().trim();
String sql = "select uname,pass"
+ " from login "
+ "where uname = '"+user+"' "
+ "AND pass = '"+pass+"'";
pst = (OraclePreparedStatement) conn.prepareStatement(sql);
rs = (OracleResultSet) pst.executeQuery(sql);
// remaining code
}
//catch block
}
Mextable.java:
从Signin.java访问userTF文本字段的组件值显然无法正常工作,因为未插入该值。而不是该值,插入NULL。此插入查询中的其余值将插入表orders
中。
private void ConOrd2ActionPerformed(java.awt.event.ActionEvent evt) {
try{
signin l = new signin();
l.getComponent(0).getName();
int rows = jTable23.getRowCount();
String user4 = l.userTF.getText().trim();
String sqli = "insert into orders"
+ "(o_id,item_id, order_name, uname)"
+ " values (ord_seq.nextval,?,?,'"+user4+"')";
//o_id,item_id,order_name is inserted and uname value is added as
//Null instead of the username value in the JTextfield in the Signin page.
pst = (OraclePreparedStatement) conn.prepareStatement(sqli);
for(int row =0; row < rows; row++)
{
String item2= (String)jTable23.getValueAt(row, 0);
String fooname2= (String)jTable23.getValueAt(row, 1);
pst.setString(1, item2);
pst.setString(2, fooname2);
pst.execute();
}
pst.executeUpdate();
conn.commit();
}
catch(Exception e)
{
System.out.println(e);
}
}
}
答案 0 :(得分:0)
就我可以分析的问题而言,流程从登录到可用。并且每个用户都将拥有username.in在这种情况下,您可以将字段JTextField作为公共静态并在mextable类中使用该字段。
在登录课程中
Public static JTextField val;
并且可以使用mextable
班级名称。变种名称;
Signin.val;