如何与JSF中的(MySQL)数据库进行交互

雅各布·阿法特尔(Jakob Abfalter)

我来自PHP,正在尝试使用JSF构建Web应用程序。我真的很喜欢JSF的某些任务的简单性(例如,使用Ajax),但是当涉及到数据库集成时,我非常困惑,并且无论我读了多少书,都不知道从哪里开始以及如何开始。 。

过去,我只是在PhpMyAdmin中创建和管理MySQL数据库,并通过PHP进行连接,而在JSF中,这似乎要困难得多。

我使用Apache Tomcat作为Servlet容器,甚至可以在Tomcat上运行PhpMyAdmin吗?此外,我了解了一些不同的方法来访问Web应用程序中的数据库,例如使用Hibernate作为连接工具的JPA和JDBC。

因此,我在这个问题上基本上希望提供的是有关Java Server Faces中数据库连接的初学者提示和教程。我也想知道是否仍然可以使用PhpMyAdmin来管理和创建数据库。

对于这个问题如此普遍,我感到很抱歉,但经过数小时的研究,我仍然不清楚,我希望从有经验的人那里获得一些信息。

拉米

仅作为开始并了解如何在JSF中建立与db的连接,我将为您提供一个示例,说明如何在不使用任何其他框架的情况下手动进行连接,以后可以使用Hibernate或所需的任何工具。

1-)确保您的mysql服务器正在运行

2-)创建一个新的动态Web项目(如果尚不存在)

3-)下载mysql Connector jar文件并将其放在web-inf / lib下

4-)在您的web.xml中定义DB Var。像这样的东西:

<context-param>
    <param-name>JDBC-DRIVER</param-name>
    <param-value>com.mysql.jdbc.Driver</param-value>
</context-param>
<context-param>
    <param-name>DB-SERVER</param-name>
    <param-value>jdbc:mysql://localhost:3306/db_name...</param-value>
</context-param>
<context-param>
    <param-name>DB-USER</param-name>
    <param-value>root or your db username</param-value>
</context-param>
<context-param>
    <param-name>DB-PASSWORD</param-name>
    <param-value>...db user password ...</param-value>
</context-param>

5-)创建一个简单的数据库连接管理器示例:

import java.io.Serializable;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.regex.Pattern;

import javax.faces.context.FacesContext;


public class DBM implements Serializable{
    private static final long serialVersionUID = 9204275723046653468L;
    private String db_server   = "";
    private String db_user     = "";
    private String db_password = "";
    private String db_driver   = "";

    public Connection connection = null;

    public DBM() throws Exception {
        init();
    }

    private void init()throws Exception{
        FacesContext fc = FacesContext.getCurrentInstance();
        db_server   = fc.getExternalContext().getInitParameter("DB-SERVER");
        db_user     = fc.getExternalContext().getInitParameter("DB-USER");
        db_password = fc.getExternalContext().getInitParameter("DB-PASSWORD");
        db_driver   = fc.getExternalContext().getInitParameter("JDBC-DRIVER");
        Class.forName(db_driver);
    }   

    public Connection initConnection() throws Exception{
        if( this.connection == null ){
            this.connection = DriverManager.getConnection(db_server, db_user, db_password);
            this.connection.setAutoCommit(false);
        }else if( this.connection.isClosed() ){
            this.connection = null;
            this.connection = DriverManager.getConnection(db_server, db_user, db_password);
            this.connection.setAutoCommit(false);
        }
        return this.connection;
    }

    public void closeConnection(){
        try {
            if( this.connection != null ){
                this.connection.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void commitConnection(){
        try {
            if( this.connection != null && !this.connection.isClosed() ){
                this.connection.commit();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void rollbackConnection(){
        try {
            if( this.connection != null && !this.connection.isClosed() ){
                this.connection.rollback();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

6-)现在让我们创建一个名为User的测试类,在其中使用db Connection:

import java.io.Serializable;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;



public class User implements Serializable{
    private static final long serialVersionUID = -7667553477247791348L;
    private int id;
    private String name;    
    private String category;
    private static String db_table = "db table name of this class";

    public User(){

    }
    public User(int id, String name, String cat) {
        super();
        this.id = id;
        this.name = name;
        this.category = cat;
    }

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public String getCategory() {
        return category;
    }
    public void setCategory(String category) {
        this.category = category;
    }
    public static List<User> getListByCategory(DBM dbm, String cid, boolean close) throws Exception{
        List<User> list            = new ArrayList<User>();
        PreparedStatement preState = null;
        ResultSet resultSet        = null;
        try {
            if( dbm == null ){
                dbm = new DBM();
            }
            String sql = "SELECT * FROM "+db_table+" WHERE _CATEGORY_ID=?";
            preState   = dbm.initConnection().prepareStatement(sql); 
            preState.setString(1, cid);
            resultSet  = preState.executeQuery();
            while (resultSet.next()) {
                list.add( new User(resultSet.getInt(1),resultSet.getString(2),resultSet.getString(3)) );                
            }
        }catch (Exception e) {
            e.printStackTrace();
        }finally{
            if( preState != null )
                preState.close();
            if( close && dbm.connection != null )
                dbm.connection.close();         
        }
        return list;
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用MySQL与C中的2个数据库进行交互?

来自分类Dev

如何在MySQL数据库中对行进行排序

来自分类Dev

如何通过Django中的模板函数与具有Model的现有数据库进行交互

来自分类Dev

如何使用Sinon通过mssql库与数据库进行交互?

来自分类Dev

jms如何与基础数据库交互?

来自分类Dev

如何从 MYSQL 数据库中检索数据并通过单击按钮在 Android 中进行验证

来自分类Dev

OpenVZ容器是否可以与主机上的MySQL数据库进行交互?

来自分类Dev

如何在列表上并行进行潜在的数据库交互操作

来自分类Dev

如何在Chrome和Jquery的帮助下使用chrome扩展与数据库进行交互?

来自分类Dev

如何对从数据库中获得的数据进行排序?

来自分类Dev

如何从mysql数据库中解码一行并对其进行编码

来自分类Dev

如何在MySQL数据库中管理条件库?

来自分类Dev

Kivy:如何合并单元格并与MySQL数据库交互

来自分类Dev

如何在MySQL中按DMY格式从Mysql数据库中按日期列显示并基于它进行搜索

来自分类Dev

如何在Django中对索引数据库进行分组

来自分类Dev

如何按数据库中的列对表进行排序?

来自分类Dev

如何在android中对sqlite数据库进行排序

来自分类Dev

如何显示MySQL数据库中的隐藏数据

来自分类Dev

如何使用php从mysql数据库中获取数据

来自分类Dev

如何在MySQL数据库中输入$ _POST数据

来自分类Dev

如何在mysql数据库中添加json数据

来自分类Dev

如何更新mySQL数据库中的数据?

来自分类Dev

如何使用mysql数据库在AutoCompleteTextView中获取数据?

来自分类Dev

如何基于数组从mysql数据库中获取数据

来自分类Dev

努力理解与MySQL数据库交互的逻辑

来自分类Dev

如何从PHP / mysql中的数据库中删除?

来自分类Dev

与数据库交互而不在数据库中创建数据的单元测试代码

来自分类Dev

Django:如何与MySQL中的表进行交互

来自分类Dev

数据库设计:如何将用户的新闻偏好存储在MySQL数据库中?

Related 相关文章

  1. 1

    如何使用MySQL与C中的2个数据库进行交互?

  2. 2

    如何在MySQL数据库中对行进行排序

  3. 3

    如何通过Django中的模板函数与具有Model的现有数据库进行交互

  4. 4

    如何使用Sinon通过mssql库与数据库进行交互?

  5. 5

    jms如何与基础数据库交互?

  6. 6

    如何从 MYSQL 数据库中检索数据并通过单击按钮在 Android 中进行验证

  7. 7

    OpenVZ容器是否可以与主机上的MySQL数据库进行交互?

  8. 8

    如何在列表上并行进行潜在的数据库交互操作

  9. 9

    如何在Chrome和Jquery的帮助下使用chrome扩展与数据库进行交互?

  10. 10

    如何对从数据库中获得的数据进行排序?

  11. 11

    如何从mysql数据库中解码一行并对其进行编码

  12. 12

    如何在MySQL数据库中管理条件库?

  13. 13

    Kivy:如何合并单元格并与MySQL数据库交互

  14. 14

    如何在MySQL中按DMY格式从Mysql数据库中按日期列显示并基于它进行搜索

  15. 15

    如何在Django中对索引数据库进行分组

  16. 16

    如何按数据库中的列对表进行排序?

  17. 17

    如何在android中对sqlite数据库进行排序

  18. 18

    如何显示MySQL数据库中的隐藏数据

  19. 19

    如何使用php从mysql数据库中获取数据

  20. 20

    如何在MySQL数据库中输入$ _POST数据

  21. 21

    如何在mysql数据库中添加json数据

  22. 22

    如何更新mySQL数据库中的数据?

  23. 23

    如何使用mysql数据库在AutoCompleteTextView中获取数据?

  24. 24

    如何基于数组从mysql数据库中获取数据

  25. 25

    努力理解与MySQL数据库交互的逻辑

  26. 26

    如何从PHP / mysql中的数据库中删除?

  27. 27

    与数据库交互而不在数据库中创建数据的单元测试代码

  28. 28

    Django:如何与MySQL中的表进行交互

  29. 29

    数据库设计:如何将用户的新闻偏好存储在MySQL数据库中?

热门标签

归档