Java数据库 使用Java来撷取数据库的记录时,提示“string index out of range:-1”怎么处理? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 import java.awt.*;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.awt.event.WindowListener;import javax.swing.*;import java.sql.*;public class db2 extends JFrame{ Connection ConnObj; Statement SQLStatement; ResultSet RS; JPanel ContentPane; Panel Panel1; Label L1,L2,L3,L4; TextField T1,T2,T3,T4; Button B1,B2,B3,B4; public db2() { ContentPane=(JPanel)this.getContentPane(); ContentPane.setLayout(null); Panel1=new Panel(); Panel1.setBounds(0,0,290,130); Panel1.setLayout(null); Panel1.setEnabled(false); ContentPane.add(Panel1); L1=new Label("ISBN:"); L1.setBounds(20,10,50,25); Panel1.add(L1); L2=new Label("书名:"); L2.setBounds(20, 40, 50, 25); Panel1.add(L2); L3=new Label("作者:"); L3.setBounds(20, 70, 50, 25); Panel1.add(L3); L4=new Label("价格:"); L4.setBounds(20, 100, 50, 25); Panel1.add(L4); T1=new TextField(); T1.setBounds(70,10,200,25); Panel1.add(T1); T2=new TextField(); T2.setBounds(70,40,200,25); Panel1.add(T2); T3=new TextField(); T3.setBounds(70,70,200,25); Panel1.add(T3); T4=new TextField(); T4.setBounds(70,100,200,25); Panel1.add(T4); B1=new Button("第一条"); B1.setBounds(new Rectangle(10,150,65,20) ); B1.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { B1_mouseClicked(e); } } ); ContentPane.add(B1); B2=new Button("上一条"); B2.setBounds(80,150,65,20); B2.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { B2_mouseClicked(e); } } ); ContentPane.add(B2); B3=new Button("下一条"); B3.setBounds(150,150,65,20); B3.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { B3_mouseClicked(e); } } ); ContentPane.add(B3); B4=new Button ("最末条"); B4.setBounds(220,150,65,20); B4.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { B4_mouseClicked(e); } } ); ContentPane.add(B4); this.setBounds(200, 100, 310, 210); this.setTitle("使用select语句"); this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } } ); this.setVisible(true); try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); ConnObj=DriverManager.getConnection("jdbc:odbc:db2"); SQLStatement=ConnObj.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); RS=SQLStatement.executeQuery("SELECT*FROM BookData1"); if(RS.next()) { T1.setText(RS.getString("ISBN")); T2.setText(RS.getString("BookName")); T3.setText(RS.getString("Author")); T4.setText(String.valueOf(RS.getInt("Price"))); } else JOptionPane.showMessageDialog(this,"myBook数据库内,无任何数据"); } catch (Exception ecp) { JOptionPane.showMessageDialog(this,ecp.getMessage()); } } void B1_mouseClicked(MouseEvent e) { try { RS.first(); T1.setText(RS.getString("ISBN")); T2.setText(RS.getString("BookName")); T3.setText(RS.getString("Author")); T4.setText(String.valueOf(RS.getInt("Price"))); } catch(SQLException ecp) { } } void B2_mouseClicked(MouseEvent e) { try { if(RS.previous()) { T1.setText(RS.getString("ISBN")); T2.setText(RS.getString("BookName")); T3.setText(RS.getString("Author")); T4.setText(String.valueOf(RS.getInt("Price"))); } else { RS.first(); JOptionPane.showMessageDialog(B2, "已到第一条"); } } catch (Exception ecp) { } } void B3_mouseClicked(MouseEvent e) { try { if(RS.next()) { T1.setText(RS.getString("ISBN")); T2.setText(RS.getString("BookName")); T3.setText(RS.getString("Author")); T4.setText(String.valueOf(RS.getInt("Price"))); } else { RS.last(); JOptionPane.showMessageDialog(B3, "已到最末条"); } } catch (Exception ecp) { } } void B4_mouseClicked(MouseEvent e) { try { RS.last(); T1.setText(RS.getString("ISBN")); T2.setText(RS.getString("BookName")); T3.setText(RS.getString("Author")); T4.setText(String.valueOf(RS.getInt("Price"))); } catch(SQLException ecp) { } } public static void main(String[] args) { new db2(); } } 没有你的数据库。用 h2 建立了一个表,试了一下,没遇到你说的问题。ps.位于第一或末尾 时 通过禁用jbutton 前一个/后一个 而不是弹出对话框 我们在做java开发的时候有jdk文档可以参考,在c或者C++开发的时候有类似的文档吗? 高分求javaMD5加密算法和自动ID生成方法,要具体的源代码哦,在线等 关于thinking in java 中的一个疑问 如何在内部匿名类用一个外部int变量 急啊,哪里能下到JDK1.3或之前版本的JDK? 初学java 简单问题! eclipse中开发GUI程序的两个小问题 高手请进。 请教,急!! eclipse出现错误: 找不到或无法加载主类 问题求助 有没有一些针对初学者的练习题?
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;import javax.swing.*;
import java.sql.*;
public class db2 extends JFrame
{
Connection ConnObj;
Statement SQLStatement;
ResultSet RS;
JPanel ContentPane;
Panel Panel1;
Label L1,L2,L3,L4;
TextField T1,T2,T3,T4;
Button B1,B2,B3,B4;
public db2()
{
ContentPane=(JPanel)this.getContentPane();
ContentPane.setLayout(null);
Panel1=new Panel();
Panel1.setBounds(0,0,290,130);
Panel1.setLayout(null);
Panel1.setEnabled(false);
ContentPane.add(Panel1);
L1=new Label("ISBN:");
L1.setBounds(20,10,50,25);
Panel1.add(L1);
L2=new Label("书名:");
L2.setBounds(20, 40, 50, 25);
Panel1.add(L2);
L3=new Label("作者:");
L3.setBounds(20, 70, 50, 25);
Panel1.add(L3);
L4=new Label("价格:");
L4.setBounds(20, 100, 50, 25);
Panel1.add(L4);
T1=new TextField();
T1.setBounds(70,10,200,25);
Panel1.add(T1);
T2=new TextField();
T2.setBounds(70,40,200,25);
Panel1.add(T2);
T3=new TextField();
T3.setBounds(70,70,200,25);
Panel1.add(T3);
T4=new TextField();
T4.setBounds(70,100,200,25);
Panel1.add(T4);
B1=new Button("第一条");
B1.setBounds(new Rectangle(10,150,65,20) );
B1.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
B1_mouseClicked(e);
}
}
);
ContentPane.add(B1);
B2=new Button("上一条");
B2.setBounds(80,150,65,20);
B2.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
B2_mouseClicked(e);
}
}
);
ContentPane.add(B2);
B3=new Button("下一条");
B3.setBounds(150,150,65,20);
B3.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
B3_mouseClicked(e);
}
}
);
ContentPane.add(B3);
B4=new Button ("最末条");
B4.setBounds(220,150,65,20);
B4.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
B4_mouseClicked(e);
}
}
);
ContentPane.add(B4);
this.setBounds(200, 100, 310, 210);
this.setTitle("使用select语句");
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
this.setVisible(true);
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
ConnObj=DriverManager.getConnection("jdbc:odbc:db2");
SQLStatement=ConnObj.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
RS=SQLStatement.executeQuery("SELECT*FROM BookData1");
if(RS.next())
{
T1.setText(RS.getString("ISBN"));
T2.setText(RS.getString("BookName"));
T3.setText(RS.getString("Author"));
T4.setText(String.valueOf(RS.getInt("Price")));
}
else
JOptionPane.showMessageDialog(this,"myBook数据库内,无任何数据");
}
catch (Exception ecp)
{
JOptionPane.showMessageDialog(this,ecp.getMessage());
}
}
void B1_mouseClicked(MouseEvent e)
{
try
{
RS.first();
T1.setText(RS.getString("ISBN"));
T2.setText(RS.getString("BookName"));
T3.setText(RS.getString("Author"));
T4.setText(String.valueOf(RS.getInt("Price")));
}
catch(SQLException ecp)
{
}
}
void B2_mouseClicked(MouseEvent e)
{
try
{
if(RS.previous())
{
T1.setText(RS.getString("ISBN"));
T2.setText(RS.getString("BookName"));
T3.setText(RS.getString("Author"));
T4.setText(String.valueOf(RS.getInt("Price")));
}
else
{
RS.first();
JOptionPane.showMessageDialog(B2, "已到第一条");
}
}
catch (Exception ecp)
{
}
}
void B3_mouseClicked(MouseEvent e)
{
try
{
if(RS.next())
{
T1.setText(RS.getString("ISBN"));
T2.setText(RS.getString("BookName"));
T3.setText(RS.getString("Author"));
T4.setText(String.valueOf(RS.getInt("Price")));
}
else
{
RS.last();
JOptionPane.showMessageDialog(B3, "已到最末条");
}
}
catch (Exception ecp)
{
}
}
void B4_mouseClicked(MouseEvent e)
{
try
{
RS.last();
T1.setText(RS.getString("ISBN"));
T2.setText(RS.getString("BookName"));
T3.setText(RS.getString("Author"));
T4.setText(String.valueOf(RS.getInt("Price")));
}
catch(SQLException ecp)
{
}
}
public static void main(String[] args)
{
new db2();
}
}