首先说明一下,这个代码是所有Database、Table都适用的,可以直接复制,改一下Main里实例化对象中的实参即可。
如果是MySQL,需要更改数据库驱动程序driverName和dbURL。
创建一个连接类:
这个类包含一个构造方法,设置形参用于连接数据库,第二个是查询Table所有数据的方法,可以自适应该表的属性个数。
import java.sql.*;
public class ConnectDb {
private Connection conn;
public ConnectDb(String databaseName, String username, String password) {
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
//连接数据库
try {
Class.forName(driverName);
String dbURL = "jdbc:sqlserver://localhost:1433;databaseName=" + databaseName;
this.conn = DriverManager.getConnection(dbURL, username, password);
System.out.println("Successful Connection !");
} catch (Exception e) {
e.printStackTrace();
System.out.println("Connection failed !");
}
}
public void SelectAll(String tableName) {
ResultSetMetaData rsmd = null;
try {//try catch判断是否有异常
Statement sqlStatement = conn.createStatement();//创建sql语句
String sql = "select * from " + tableName;
ResultSet rs = sqlStatement.executeQuery(sql);//执行sql语句
//下面根据该table输出属性组和所有元组
rsmd = rs.getMetaData();//获取属性名
String []arr = new String[0];
if(rsmd != null) {
int count = rsmd.getColumnCount();//统计属性个数
arr = new String[count];
for (int i = 1; i <= count; i++) {
arr[i-1] = rsmd.getColumnName(i);//把属性名输入arr
System.out.print(rsmd.getColumnName(i)+" ");//输出属性名
}
}
System.out.println();//换一行,保证格式正确
while (rs.next()) {
//判断是否存在下一行,如果存在,就使用foreach循环输出元组
for (String s : arr) {
System.out.print(rs.getString(s) + " ");
}
System.out.println();//控制格式
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Main方法调用连接类:
可以把下面代码添加到main方法里,只需要修改实参即可
ConnectDb connectDb = new ConnectDb("数据库名","用户名","密码");
connectDb.SelectAll("表名");