一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java執行SQL語句實現查詢的通用方法詳解

java執行SQL語句實現查詢的通用方法詳解

2021-03-08 13:12ustcjin Java教程

這篇文章主要介紹了java執行SQL語句實現查詢的通用方法詳解,具有一定借鑒價值,需要的朋友可以參考下。

完成SQL查詢 并將查詢結果放入Vector容器,以便其他程序使用

java" id="highlighter_304508">
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/*
   * 執行sql查詢語句
   */
public static <T> Vector<T> executeQuery(Class<T> clazz, String sql, Object... args) {
    Connection conn = null;
    PreparedStatement preparedstatement = null;
    ResultSet rs = null;
    Vector<T> vecRs = new Vector<T>();
    T obj = null;
    try {
        conn = JDBCTools.getConnection();
        preparedstatement = conn.prepareStatement(sql);
        // 通過sql語句來判斷選擇了那些列
        for (int i = 0; i < args.length; i++) {
            preparedstatement.setObject(i + 1, args[i]);
        }
        // 利用sql查詢獲取結果集
        // 利用反射創建實體類的對象
        // 獲取結果街的別名Stud_id 獲取JDBC的元數據
        // 獲取結果集每一列的值,結合上一步得到一個Map鍵值對
        // 鍵:列的別名 值:列的值
        // 在利用反射對實體類對象的屬性賦值
        // 屬性為Map的鍵 值為Map的值
        rs = preparedstatement.executeQuery();
        // 獲取元數據
        ResultSetMetaData rsmd = rs.getMetaData();
        Map<String, Object> mapMetaData = new HashMap<String, Object>();
        // 打印一列的列名
        while (rs.next()) {
            //獲取數據表中滿足要求的一行數據,并放入Map中
            for (int i = 0; i < rsmd.getColumnCount(); i++) {
                String columnLabel = rsmd.getColumnLabel(i + 1);
                Object columnValue = rs.getObject(columnLabel);
                // System.out.println(columnLabel);
                mapMetaData.put(columnLabel, columnValue);
            }
            //將Map中的數據通過反射初始化T類型對象
            if (mapMetaData.size() > 0) {
                obj = clazz.newInstance();
                for (Map.Entry<String, Object> entry : mapMetaData.entrySet()) {
                    String fieldkey = entry.getKey();
                    Object fieldvalue = entry.getValue();
                    // System.out.println(fieldkey + ":" + fieldvalue);
                    ReflectionUtils.setFieldValue(obj, fieldkey, fieldvalue);
                    //通過反射賦值
                }
            }
            //將對象裝入Vector容器
            vecRs.add(obj);
        }
    }
    catch (Exception e) {
        e.printStackTrace();
    }
    return vecRs;
}

其中使用到的工具類方法

獲取數據庫連接JDBCTools.getConnection()

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*
   * 獲取數據庫的連接
   */
public static Connection getConnection() throws Exception {
    Connection conn = null;
    String driver = null;
    String jdbcUrl = null;
    String username = null;
    String password = null;
    // 獲取Properties對象
    Properties properties = new Properties();
    InputStream in = JDBCTools.class.getClassLoader().getResourceAsStream("jdbc.properties");
    properties.load(in);
    driver = properties.getProperty("driver");
    jdbcUrl = properties.getProperty("jdbcUrl");
    username = properties.getProperty("user");
    password = properties.getProperty("password");
    Class.forName(driver);
    conn = DriverManager.getConnection(jdbcUrl, username, password);
    return conn;
}

ReflectionUtils.setFieldValue(obj,fieldkey,fieldvalue);

將obj對象的fieldkey屬性賦值為fieldvalue

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//設置對象的屬性
public static void setFieldValue(Object obj,String fieldName,Object value){
    Field field=getDeclaredField(obj, fieldName);
    if(field==null){
        throw new IllegalArgumentException("Could not find field["+
            fieldName+"] on target ["+obj+"]");
    }
    makeAccessiable(field);
    try{
        field.set(obj, value);
    }
    catch(IllegalAccessException e){
        System.out.println("不可能拋出的異常");
    }
}
//判斷field的修飾符是否是public,并據此改變field的訪問權限
public static void makeAccessiable(Field field){
    if(!Modifier.isPublic(field.getModifiers())){
        field.setAccessible(true);
    }
}
//獲取field屬性,屬性有可能在父類中繼承
public static Field getDeclaredField(Object obj,String fieldName){
    for (Class<?> clazz=obj.getClass(); clazz!=Object.class; clazz=clazz.getSuperclass()){
        try{
            return clazz.getDeclaredField(fieldName);
        }
        catch(Exception e){
        }
    }
    return null;
}

總結

以上就是本文關于java執行SQL語句實現查詢的通用方法詳解的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

原文鏈接:http://blog.csdn.net/woaini1115077272/article/details/47856941

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久精品无码一区二区日韩av | 高肉h护士办公室play | 免费操比视频 | 国产精品久久现线拍久青草 | 国产在线精品成人一区二区三区 | 国产一卡二卡3卡4卡四卡在线视频 | 4tube高清性欧美 | 故意短裙公车被强好爽在线播放 | 包臀裙女教师波多野结衣 | 国产91在线免费 | 免费人成黄页在线观看69 | 校园情射 | 天天久久影视色香综合网 | 欧美成a人片免费看久久 | 青青青国产在线 | 精品国产麻豆免费人成网站 | 好大好硬好长好爽a网站 | 天堂漫画破解版 | 特黄特色大片免费视频播放 | 亚洲免费网站在线观看 | 国产精品免费看香蕉 | 成人观看免费观看视频 | 四虎免费影院4hu永久免费 | 午夜福利体检 | 青草免费在线观看 | 小兰被扒开内裤露出p | ysl蜜桃色成人麻豆 youwu在线影院 | 女人扒开下面让男人桶爽视频 | 肉大捧一进一出视频免费播放 | 成人性色生活片免费网 | 嫩草影院永久一二三入口 | 亚洲高清视频在线观看 | 亚洲国产在线播放在线 | 日本男男漫画 | 99久久国产亚洲综合精品 | 日韩精品欧美 | 女同变态 中文字幕 | 日本午夜vr影院新入口 | 99rv精品视频在线播放 | 东方影库四虎 | 亚洲va国产日韩欧美精品色婷婷 |