/
取得某表下的所有字段信息
@param table
@return
/
public List getColumnInfoesInTable(String table){
List retval = new ArrayList();
try {
Connection connection = getConnection();
// Create a result set
Statement stmt = connectioncreateStatement();
ResultSet rs = stmtexecuteQuery("SELECT FROM " + table);
// Get result set meta data
ResultSetMetaData rsmd = rsgetMetaData();
int numColumns = rsmdgetColumnCount();
// Get the column names; column indices start from 1
for (int i = 1; i < numColumns + 1; i++) {
ColumnInfoBean columnInfoBean = new ColumnInfoBean();
// 字段名
columnInfoBeansetName(rsmdgetColumnName(i));
// 字段类型
columnInfoBeansetTypeName(rsmdgetColumnTypeName(i));
// 字段类型对应的java类名
columnInfoBeansetClassName(rsmdgetColumnClassName(i));
// 显示的长度
columnInfoBeansetDisplaySize(StringvalueOf(rsmd
getColumnDisplaySize(i)));
// Precision
columnInfoBeansetPrecision(String
valueOf(rsmdgetPrecision(i)));
// Scale
columnInfoBeansetScale(StringvalueOf(rsmdgetScale(i)));
retvaladd(columnInfoBean);
}
} catch (SQLException e) {
eprintStackTrace();
}
return retval;
}
你看看JDK吗,里面肯定有resultset的所有方法的解释,基本是就是一些
getString(int a)或者getString("field");
getInt()
都是一些获取每一行的值。。。。。
还有一个类是
resultsetmetadata这个类是用来查看此结果集的基本信息,如一共有多少列
具体的还是要看看文档
你的意思是向程序传入SQL语句然后根据传入的SQL语句进行查询
如果这样,我建议是这样的,写一个单饿独的类来进行数据库CRUD
例如:
package comassetscommon;
import javasqlConnection;
import javasqlDriverManager;
import javasqlPreparedStatement;
import javasqlResultSet;
import javasqlSQLException;
import javasqlStatement;
public class DBUtil {
private static final String user = "assets";
private static final String password = "assets";
private static final String url = "jdbc:oracle:thin:@localhost:1521:assetsdb";
static {
try {
ClassforName("oraclejdbcdriverOracleDriver")newInstance();
} catch (InstantiationException e) {
eprintStackTrace();
} catch (IllegalAccessException e) {
eprintStackTrace();
} catch (ClassNotFoundException e) {
eprintStackTrace();
}
}
public static Connection getConnection() {
Connection conn = null;
try {
conn = DriverManagergetConnection(url, user, password);
} catch (SQLException e) {
eprintStackTrace();
}
return conn;
}
// 执行数据库的数据更新
public static int executeUpdata(Connection conn, String sql,
Object parame) {
int rst = -1;
PreparedStatement pstmt = null;
try {
// 设置为手动提交更新
connsetAutoCommit(false);
pstmt = connprepareStatement(sql);
// 循环设置参数
for (int i = 0; i < paramelength; i++) {
pstmtsetObject(i + 1, parame[i]);
}
rst = pstmtexecuteUpdate();
conncommit();
} catch (SQLException e) {
eprintStackTrace();
try {
// 异常时,数据回滚
connrollback();
} catch (SQLException e1) {
e1printStackTrace();
}
}
return rst;
}
// 执行查询
public static ResultSet executeQuery(Connection conn, String sql,
Object parame) {
ResultSet rs = null;
try {
PreparedStatement pstmt = connprepareStatement(sql,
ResultSetTYPE_SCROLL_INSENSITIVE,
ResultSetCONCUR_READ_ONLY);
for (int i = 0; i < paramelength; i++) {
pstmtsetObject(i + 1, parame[i]);
}
rs = pstmtexecuteQuery();
} catch (SQLException e) {
eprintStackTrace();
}
return rs;
}
// 关闭
public static void close(Connection conn, Statement stmt, ResultSet rs) {
try {
if (rs != null)
rsclose();
rs = null;
} catch (SQLException e) {
eprintStackTrace();
}
try {
if (stmt != null)
stmtclose();
stmt = null;
} catch (SQLException e) {
eprintStackTrace();
}
try {
if (conn != null)
connclose();
conn = null;
} catch (SQLException e) {
eprintStackTrace();
}
}
public static int getCount(Connection conn, String sql, Object params) {
ResultSet rs = null;
try {
PreparedStatement pstmt = connprepareStatement(sql);
// 循环设置参数
for (int i = 0; i < paramslength; i++) {
pstmtsetObject(i + 1, params[i]);
}
rs = pstmtexecuteQuery();
if (rsnext()) {// 如果有结果返回记录条数
return rsgetInt(1);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
return -1;
}
}
ResultSet rs = ; //查询语句略
while(rsnext()) {
String reserved = rsgetString(1); //第一列
String data = rsgetString(2); //第二列
String indexSize = rsgetString(3); //第三列
String unused = rsgetString(4); //第四列
}
不一定是String类型,要对应你表字段的类型,我这里只是举例
JdbC方式:
rs : ResultSet
users : ArrayList<Users>
while(rsnext())
{
User user = new User();
usersetName(rsgetString("username");//这个Username是你表里的列哦
usersetPassword(rsgetString("password"));
usersetAge(rsgetInt("age"));//getInt还是getLong就看你想要什么类型的值了(getInt只能获取int)类型的,但是getLong可以获取long类型,看楼主需要了
usersetJob(rsgetInt("job"));//这里假设楼主设置了实体类的Job属性为外键编号,如果是一个实体类,会比较复杂,如果楼主到时候不想采用这里的方式在讨论这个时候加载实体类吧
usersadd(user);
}
HibernateTemplate(spring):
。。。。好吧,其实我想说这种方式就是根据你的映射文件自动封装的
以上就是关于如何在java中用hql或sql查询得到某表的所有字段名全部的内容,包括:如何在java中用hql或sql查询得到某表的所有字段名、(2)excuteQuery()方法返回的ResultSet(结果集)的分析,如获得字段个数、各字段名称、java如何从oracle中读取的全部结果集里面动态的读取字段等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)