我做了一个jframe,在这里我必须提供药物名称和制造商名称,然后单击搜索按钮。。
它将从mysql数据库中获取数据并显示在jtable中。
jframe看起来是这样的:
但当我只给出药品名称并单击“搜索”按钮时,它不会获取数据,而只是从数据库中获取列名
当我给这两个值都赋值时,它的赋值是:java.lang.illegalargumentexception:不能设置空的TableModel:
我的srch_btnActionPerformed方法是:
private void srch_btnActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
/*if((jTextField1.getText())!=null || (jTextField2.getText())!=null)
{*/
String sql="select * from medicine where med_name=? or manufacturer_name=?";
try{
pst=conn.prepareStatement(sql);
pst.setString(1, jTextField1.getText());
pst.setString(2,jTextField2.getText());
rs=pst.executeQuery();
if(rs.next()){
jTable1.setModel(DbUtils.resultSetToTableModel(rs));
}
else
{
JOptionPane.showMessageDialog(null, "No entry with such names in DataBase!");
jTextField1.setText(null);
jTextField2.setText(null);
}
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null,e);
}
/* */
}
请帮忙。。
最佳答案
试试这样的:
//全球宣言
private Vector<Vector<String>> data; //used for data from database
private Vector<String> header; //used to store data header
//加载表单时仅显示页眉
//create header for the table
header = new Vector<String>();
header.add("Column1");
header.add("Column2");
...
model=new DefaultTableModel(data,header);
table = new JTable(model);
//执行中()
public void actionPerformed(ActionEvent ae){
if(ae.getSource()==search){
data=get();
for(int i=0;i<count;i++){
Object[] d={data.get(i).get(0),data.get(i).get(1),data.get(i).get(2)};
model.addRow(d);
}
}
}
这将帮助您从数据库中获取数据
get(){
Vector<Vector<String>> doublevector = new Vector<Vector<String>>();
Connection conn = dbConnection();//Your Database connection code
PreparedStatement pre1 = conn.prepareStatement("select * from Table");
ResultSet rs1 = pre1.executeQuery();
while(rs1.next())
{
Vector<String> singlevector = new Vector<String>();
singlevector.add(rs1.getString(1));
singlevector.add(rs1.getString(2));
....
doublevector.add(singlevector);
}
return doublevector;
}