gpt4 book ai didi

java - Java EE 中与数据库的简单连接

转载 作者:行者123 更新时间:2023-12-01 11:47:08 26 4
gpt4 key购买 nike

我是 Java EE 新手;我对带有 WebForms 和 MVC 的 ASP .NET 有很好的背景。我发现 Java EE 中没有什么比 ASP .NET 中更容易的了。尽管如此,我想做的只是使用 JBoss 运行时上的持久性连接到本地 Oracle Express 数据库。为了让它发挥作用,我绝对要发疯了。在 ASP .NET 中,我所要做的就是指定连接字符串和 walla。如果有人可以告诉我我做错了什么,或者为我指出一个在 Eclipse 中使用 JPA 的好资源,我将非常感激。

这是我的代码:

persistence.xml

我确信数据库属性是正确的; eclipse 能够成功执行 ping 操作。

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="Testing" transaction-type="RESOURCE_LOCAL">
<class>model.Testq</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@localhost:1521:XE"/>
<property name="javax.persistence.jdbc.user" value="system"/>
<property name="javax.persistence.jdbc.password" value="admin"/>
<property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
</properties>
</persistence-unit>
</persistence>

Testq class

这个类只是java中一个简单的实体,用于oracle数据库中一个非常简单的表。

package model;

import java.io.Serializable;
import javax.persistence.*;

@Entity
@NamedQuery(name="Testq.findAll", query="SELECT t FROM Testq t")
public class Testq implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@Column(name="T_ID")
private long tId;

private String descr;

public Testq() {
tId = 0;
descr = "ONE";
}

public long getTId() {
return this.tId;
}

public void setTId(long tId) {
this.tId = tId;
}

public String getDescr() {
return this.descr;
}

public void setDescr(String descr) {
this.descr = descr;
}

}

DB Servlet

我使用它来显示数据库查询的结果,但在第 28 行失败。

package com.db;

import java.io.IOException;
import java.io.PrintWriter;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import model.Testq;

@WebServlet("/DB")
public class DB extends HttpServlet {
private static final long serialVersionUID = 1L;

public DB() {
super();
// TODO Auto-generated constructor stub
}

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Testq test = new Testq();
EntityManagerFactory emf = Persistence.createEntityManagerFactory("Testing");
EntityManager em = emf.createEntityManager();
test = em.createNamedQuery("Testq.findAll", Testq.class).getSingleResult();
em.close();
emf.close();
PrintWriter out = response.getWriter();
out.println(test.getDescr());
}
}

最佳答案

非常感谢大家。事实证明,驱动程序必须位于WEB-INF的lib文件夹中。我真的很感谢你们的帮助,特别是当我厌倦处理错误时,Thorbjørn Ravn Andersen 找出了错误。

关于java - Java EE 中与数据库的简单连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29066840/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com