package alpha;
package alpha;
import java.sql.*;
import javax.swing.*;
import javax.swing.table.*;
import java.util.*;
/**
* 描述:通过查询数据库,取得显示结果数据的数据库表的JScrollPane组件显示
* */public class GetTableFromDb{
public GetTableFromDb() {
try {
/*// 登陆数据库OMT,使用jdbc-odbc桥
String dbUrl = "DbUrl";//所配置的对应数据库的数据源
String user = "UserId";//用户
String password = "password";//口令
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection(dbUrl, user, password);
//*/
String address = "jdbc:microsoft:sqlserver://192.168.0.24:1433";
//驱动类型+目标数据库ip+数据库端口
String user="sa";//数据库用户密码
String passwd="";//口令
String database = "TESTDB";//目标数据库
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");//驱动申明
Connection con = DriverManager.getConnection(address,user,passwd);//建立链接
con.setCatalog(database);//确定目标数据库 Statement stmt = con.createStatement();
String sqlCode = "SELECT UserID,UserName,UserDepat FROM UserInfo";//只提取三个字段
ResultSet rs = stmt.executeQuery(sqlCode);
Vector vect = new Vector();//用于存放数据记录
vect.removeAllElements();//初始化向量对象
while(rs.next()) {//依次读取数据结果集
Vector rec_vector=new Vector();//从结果集中取数据放入向量rec_vector中
rec_vector.addElement(rs.getString(1));
rec_vector.addElement(rs.getString(2));
rec_vector.addElement(rs.getString(3));
vect.addElement(rec_vector);//向量rec_vector加入向量vect中
}
//表列标题
String[] titleStr = {"第一列","第二列","第三列"};//表列标题设定
Vector title = new Vector();//用于存放表列标题
title.removeAllElements();
for(int i=0;i<titleStr.length;i++) {
title.addElement(titleStr[i]);
}
//生成表
jTable = new JTable(vect,title); //释放资源
rs.close();
stmt.close();
con.close();
}
catch(Exception e) {
System.out.println("GetTableFromDB error:" + e);
}
}
public JTable getTable() {
return jTable;
}
private JTable jTable;//e生成的最终表单
}package alpha;
import javax.swing.*;
import java.awt.*;
/**
* main函数入口所在class,是显示一个界面
**/
public class Test extends JFrame {
private JPanel jPanel1 = new JPanel();
private JScrollPane jScrollPane1;//容器
private JTable jTable;//表单
public Test() {
try {
GetTableFromDb gtfd = new GetTableFromDb();//调用数据库连接class
jTable = gtfd.getTable();//取得结果表数据
jScrollPane1 = new JScrollPane(jTable);//放入容器
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
this.setSize(400,300);//设置显示界面大小
this.getContentPane().add(jPanel1, BorderLayout.CENTER);
jPanel1.add(jScrollPane1, BorderLayout.CENTER);
}
///main方法入口
public static void main(String[] args) {
Test st = new Test();
st.show();
}
///
}在jb里面建立一个package alpha,添加上面两个class,运行时运行Test.java即可
当然要你jb连接数据库已经连好,或者dos下执行classpath设置好了,注意使用驱动访问,若取得的是中文,很有可能是乱码,可以如下转:
从数据库中读出后转:即令str=rs.getString(1);,再转即可
str=new String (str.getBytes("ISO-8859-1"),"gb2312");
另外,还可以选用jdbc-odbc的连接方式,此种方式无须担心乱码问题。
package alpha;
import java.sql.*;
import javax.swing.*;
import javax.swing.table.*;
import java.util.*;
/**
* 描述:通过查询数据库,取得显示结果数据的数据库表的JScrollPane组件显示
* */public class GetTableFromDb{
public GetTableFromDb() {
try {
/*// 登陆数据库OMT,使用jdbc-odbc桥
String dbUrl = "DbUrl";//所配置的对应数据库的数据源
String user = "UserId";//用户
String password = "password";//口令
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection(dbUrl, user, password);
//*/
String address = "jdbc:microsoft:sqlserver://192.168.0.24:1433";
//驱动类型+目标数据库ip+数据库端口
String user="sa";//数据库用户密码
String passwd="";//口令
String database = "TESTDB";//目标数据库
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");//驱动申明
Connection con = DriverManager.getConnection(address,user,passwd);//建立链接
con.setCatalog(database);//确定目标数据库 Statement stmt = con.createStatement();
String sqlCode = "SELECT UserID,UserName,UserDepat FROM UserInfo";//只提取三个字段
ResultSet rs = stmt.executeQuery(sqlCode);
Vector vect = new Vector();//用于存放数据记录
vect.removeAllElements();//初始化向量对象
while(rs.next()) {//依次读取数据结果集
Vector rec_vector=new Vector();//从结果集中取数据放入向量rec_vector中
rec_vector.addElement(rs.getString(1));
rec_vector.addElement(rs.getString(2));
rec_vector.addElement(rs.getString(3));
vect.addElement(rec_vector);//向量rec_vector加入向量vect中
}
//表列标题
String[] titleStr = {"第一列","第二列","第三列"};//表列标题设定
Vector title = new Vector();//用于存放表列标题
title.removeAllElements();
for(int i=0;i<titleStr.length;i++) {
title.addElement(titleStr[i]);
}
//生成表
jTable = new JTable(vect,title); //释放资源
rs.close();
stmt.close();
con.close();
}
catch(Exception e) {
System.out.println("GetTableFromDB error:" + e);
}
}
public JTable getTable() {
return jTable;
}
private JTable jTable;//e生成的最终表单
}package alpha;
import javax.swing.*;
import java.awt.*;
/**
* main函数入口所在class,是显示一个界面
**/
public class Test extends JFrame {
private JPanel jPanel1 = new JPanel();
private JScrollPane jScrollPane1;//容器
private JTable jTable;//表单
public Test() {
try {
GetTableFromDb gtfd = new GetTableFromDb();//调用数据库连接class
jTable = gtfd.getTable();//取得结果表数据
jScrollPane1 = new JScrollPane(jTable);//放入容器
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
this.setSize(400,300);//设置显示界面大小
this.getContentPane().add(jPanel1, BorderLayout.CENTER);
jPanel1.add(jScrollPane1, BorderLayout.CENTER);
}
///main方法入口
public static void main(String[] args) {
Test st = new Test();
st.show();
}
///
}在jb里面建立一个package alpha,添加上面两个class,运行时运行Test.java即可
当然要你jb连接数据库已经连好,或者dos下执行classpath设置好了,注意使用驱动访问,若取得的是中文,很有可能是乱码,可以如下转:
从数据库中读出后转:即令str=rs.getString(1);,再转即可
str=new String (str.getBytes("ISO-8859-1"),"gb2312");
另外,还可以选用jdbc-odbc的连接方式,此种方式无须担心乱码问题。
注意使用jdbc驱动连接,若对应字段不是Char等字符类型,最好用对应方法取对应数据,比如rs.getInt()取int类型的之类。若想全部转为string,取好后再toString转成String即可。
关于jtable的相关信息,建议看api帮助文档,毕竟它的DefaultTableModel很多东西需要了解,那样可用于修改table的各种属性。