如何在java中用hql或sql查询得到某表的所有字段名

如何在java中用hql或sql查询得到某表的所有字段名,第1张

/

取得某表下的所有字段信息

@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中读取的全部结果集里面动态的读取字段等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9434299.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存