- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用DeleteDbFiles.execute("./data", "mydb", false)删除h2数据库文件,但出现以下错误:org.h2.message.DbException:无法删除文件“dir/data”/mydb.mv.db”。
和引起:org.h2.jdbc.JdbcSQLNonTransientException:无法删除文件“dir/data/mydb.mv.db”。
我尝试关闭 EntityManager em (em.close()) 和 EntityManagerFactory emf (emf.close()),然后删除文件,但仍然出现相同的错误。我尝试从 mainForm 中删除 @persistencecontext 但仍然收到相同的错误。这是我的代码:
主类:
import...
public class Main {
JalaliCalendar jalaliCalendar = new JalaliCalendar();
EntityManagerFactory emf = Persistence.createEntityManagerFactory("NewPersistenceUnit");
List<LoginEntity> list = new ArrayList<>();
public Main(){
getData();
interance();
}
public void interance(){
if (!list.isEmpty()){
LoginForm loginForm = new LoginForm(list);
loginForm.setTitle("پنجره ورود");
loginForm.setContentPane(loginForm.mainpane);
loginForm.pack();
loginForm.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
loginForm.setLocationRelativeTo(null);
loginForm.setVisible(true);
}else {
Wellcome wellcome = new Wellcome();
wellcome.setTitle("خوش آمدید");
wellcome.setContentPane(wellcome.mainpane);
wellcome.pack();
wellcome.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
wellcome.setLocationRelativeTo(null);
wellcome.setVisible(true);
}
}
public void getData(){
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Query query = em.createQuery("from LoginEntity ");
list = query.getResultList();
em.getTransaction().commit();
em.close();
}
public void getDiff(){
JalaliCalendar j1 = new JalaliCalendar();
j1.setYear(1398);
j1.setMonth(3);
j1.setDay(5);
JalaliCalendar j2 = new JalaliCalendar();
j2.setYear(1398);
j2.setMonth(2);
j2.setDay(5);
jalaliCalendar.getMonth();
jalaliCalendar.getDay();
j1.getMonth();
j1.getDay();
int m = jalaliCalendar.getMonth() - j1.getMonth();
int d = jalaliCalendar.getDay() - j1.getDay();
int dif = (m * 30) + d;
System.out.println(dif);
System.out.println(j1.getDateByDiff(dif));
}
public static void main(String[] args) {
new Main();
}
}
我的欢迎表格:
import ...
public class Wellcome extends JFrame{
private JTextField tf_title;
private JTextField tf_address;
private JTextField tf_builders;
private JRadioButton jb_yes;
private JRadioButton jb_no;
private JButton btn_next;
public JPanel mainpane;
private JPasswordField pf_p1;
private JPasswordField pf_p2;
EntityManagerFactory emf = Persistence.createEntityManagerFactory("NewPersistenceUnit");
List<LoginEntity> list = new ArrayList<>();
public Wellcome() {
btn_next.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
saveData();
}
});
}
public void saveData(){
String title = tf_title.getText();
String address = tf_address.getText();
boolean kind = false;
if (jb_yes.isSelected()){
kind = true;
}else {
kind = false;
}
String builders = tf_builders.getText();
String p1 = String.valueOf(pf_p1.getPassword());
String p2 = String.valueOf(pf_p2.getPassword());
System.out.println(p1);
System.out.println(p2);
String pass = null;
if (title.isEmpty() || address.isEmpty() || !jb_no.isSelected() && !jb_yes.isSelected() || builders.isEmpty() || p1.isEmpty() || p2.isEmpty()){
JOptionPane.showMessageDialog(null, "تمام بخش ها را کامل کنید");
}else if (!p1.equals(p2)){
JOptionPane.showMessageDialog(null, "رمز عبورها یکسان نیستند");
}else{
pass = p1;
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
LoginEntity loginEntity = new LoginEntity();
loginEntity.setTitle(title);
loginEntity.setAddress(address);
loginEntity.setKind(kind);
loginEntity.setBuilders(builders);
loginEntity.setPass(pass);
em.persist(loginEntity);
em.getTransaction().commit();
em.close();
list.add(loginEntity);
LoginForm loginForm = new LoginForm(list);
loginForm.setTitle("پنجره ورود");
loginForm.setContentPane(loginForm.mainpane);
loginForm.pack();
loginForm.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
loginForm.setLocationRelativeTo(null);
loginForm.setVisible(true);
dispose();
}
}
}
我的登录表单:
import ...
public class LoginForm extends JFrame{
private JPasswordField pf_pass;
private JButton btn_exit;
private JButton btn_login;
private JLabel lb_project;
public JPanel mainpane;
public static List<LoginEntity> list = new ArrayList<>();
public LoginForm(List<LoginEntity> loginlist){
list = loginlist;
lb_project.setText(list.get(0).getTitle());
btn_login.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
Login();
}
});
btn_exit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
//exit
System.exit(0);
}
});
}
public void Login(){
String pass = String.valueOf(pf_pass.getPassword());
if (pass.equals(list.get(0).getPass())){
MainForm mainForm = new MainForm(list);
mainForm.setTitle("چرتکه");
mainForm.setContentPane(mainForm.mainpane1);
mainForm.pack();
mainForm.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
mainForm.setLocationRelativeTo(null);
mainForm.setExtendedState(JFrame.MAXIMIZED_BOTH);
mainForm.setVisible(true);
dispose();
}else {
JOptionPane.showMessageDialog(null, "رمزعبور معتبر نیست");
}
}
我的主要形式:
import...
@PersistenceContext
public class MainForm extends JFrame {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("NewPersistenceUnit");
public JPanel mainpane1;
public JTable table1;
private JTextField tf_price;
private JTextArea ta_detail;
private JButton btn_save;
private JButton btn_edit;
private JButton btn_delete;
private JFormattedTextField tf_date;
private JComboBox cb_mycards;
private JButton btn_addWorker;
private JComboBox cb_yorcard;
private JComboBox cb_title;
private JButton btn_mycard_window;
private JButton btn_addyorcards;
private JTextField tf_search;
private JLabel lb_sum;
private JButton btn_print;
private JLabel lb_part_sum;
private JScrollPane mainscroll;
private JPanel firstpanel;
private JPanel secenodpanel;
private JTable table2;
private JLabel lb_builders;
private JLabel lb_project;
private JButton btn_calc;
List<PeymentsEntity> PeymentList;
List<MycardsEntity> MycardList;
List<WorkersEntity> workers;
List<String> WorkersNameList = new ArrayList<>();
List<YourcardsEntity> numbers;
JalaliCalendar jalaliCalendar = new JalaliCalendar();
List<LoginEntity> list = new ArrayList<>();
String res;
String res2;
public MainForm(List<LoginEntity> loginlist) {
list = loginlist;
int year = jalaliCalendar.getYear();
int month = jalaliCalendar.getMonth();
int day = jalaliCalendar.getDay();
String m;
String d;
if (month <= 9) {
m = "0" + month;
} else {
m = String.valueOf(month);
}
if (day <= 9) {
d = "0" + day;
} else {
d = String.valueOf(day);
}
res = year + "/" + m + "/" + d;
res2 = year + "-" + m + "-" + d;
tf_date.setValue(res);
btn_addWorker.setVisible(false);
btn_addyorcards.setVisible(false);
lb_project.setText(list.get(0).getTitle());
lb_builders.setText(list.get(0).getBuilders());
if (!list.get(0).isKind()) {
//btn_calc.setVisible(false);
}
getPeymentData();
getWorkers();
FillMycardComboBox();
btn_calc.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
restore();
}
});
}
public void getPeymentData() {
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
javax.persistence.Query query = em.createQuery("from PeymentsEntity ");
PeymentList = query.getResultList();
em.getTransaction().commit();
em.close();
int price = 0;
for (PeymentsEntity p : PeymentList) {
price += p.getPrice();
}
lb_sum.setText(String.valueOf(price));
}
public void getMycardData() {
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
javax.persistence.Query query = em.createQuery("from MycardsEntity ");
MycardList = query.getResultList();
em.getTransaction().commit();
em.close();
}
public void FillMycardComboBox() {
for (MycardsEntity mc : MycardList) {
cb_mycards.addItem(mc.getName());
}
}
public void restore() {
DeleteDbFiles.execute("./data", "mydb", false);
System.out.println("deleted");
try {
RunScript.execute("./data/mydb", "", "", "./test.sql", null, false);
}catch (SQLException e){
e.printStackTrace();
}
}
public void backup() {
try {
Backup.execute("name.zip", "./data","mydata", true );
} catch (SQLException e) {
e.printStackTrace();
}
}
}
和我的 persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence 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"
version="2.1">
<persistence-unit name="NewPersistenceUnit" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<class>model.MycardsEntity</class>
<class>model.PeymentsEntity</class>
<class>model.WorkersEntity</class>
<class>model.YourcardsEntity</class>
<class>model.LoginEntity</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.h2.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:h2:file:./data/mydb;DB_CLOSE_ON_EXIT=TRUE;FILE_LOCK=NO" />
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hbm2ddl.auto" value="update"/>
</properties>
调用restore()方法后出现错误:
Exception in thread "AWT-EventQueue-0" org.h2.message.DbException: Cannot delete file "D:/Java/hamid apps/IntellijProjects/JPADemo/data/mydb.mv.db" [90025-199]
at org.h2.message.DbException.get(DbException.java:205)
at org.h2.message.DbException.get(DbException.java:181)
at org.h2.store.fs.FilePathDisk.delete(FilePathDisk.java:178)
at org.h2.store.fs.FileUtils.delete(FileUtils.java:67)
at org.h2.tools.DeleteDbFiles.process(DeleteDbFiles.java:106)
at org.h2.tools.DeleteDbFiles.process(DeleteDbFiles.java:91)
at org.h2.tools.DeleteDbFiles.execute(DeleteDbFiles.java:75)
at MainForm.backup(MainForm.java:723)
at MainForm$14.actionPerformed(MainForm.java:308)
at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)
at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:270)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6589)
at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342)
at java.desktop/java.awt.Component.processEvent(Component.java:6354)
at java.desktop/java.awt.Container.processEvent(Container.java:2261)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4966)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2319)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4798)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4914)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4543)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4484)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2305)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2772)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4798)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
at java.desktop/java.awt.EventQueue.access$600(EventQueue.java:97)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: org.h2.jdbc.JdbcSQLNonTransientException: Cannot delete file "D:/Java/hamid apps/IntellijProjects/JPADemo/data/mydb.mv.db" [90025-199]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:502)
at org.h2.message.DbException.getJdbcSQLException(DbException.java:427)
... 45 more
最佳答案
只需更改我的 persistence.xml 内容,如下所示,并在删除文件之前关闭 EntityManagerFactory。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<persistence 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"
version="2.1">
<persistence-unit name="NewPersistenceUnit">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<class>model.MycardsEntity</class>
<class>model.PeymentsEntity</class>
<class>model.WorkersEntity</class>
<class>model.YourcardsEntity</class>
<class>model.LoginEntity</class>
<properties>
<property name="hibernate.connection.url" value="jdbc:h2:file:./data/mydata;DB_CLOSE_ON_EXIT=FALSE;FILE_LOCK=NO"/>
<property name="hibernate.connection.driver_class" value="org.h2.Driver"/>
<property name="hibernate.connection.username" value=""/>
<property name="hibernate.connection.password" value=""/>
<property name="hibernate.archive.autodetection" value="class"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
现在可以使用以下方式删除文件:
DeleteDbFiles.execute("./data", "mydb", false);
关于java - 无法使用 java 使用 DeleteDbFiles.execute 删除我的 h2 数据库文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57546917/
我的问题是如何在 python 中创建一个简单的数据库。我的例子是: User = { 'Name' : {'Firstname', 'Lastname'}, 'Address' : {'Street
我需要创建一个与远程数据库链接的应用程序! mysql 是最好的解决方案吗? Sqlite 是唯一的本地解决方案吗? 我使用下面的方法,我想知道它是否是最好的方法! NSString *evento
给定两台 MySQL 服务器,一台本地,一台远程。两者都有一个包含表 bohica 的数据库 foobar。本地服务器定义了用户 'myadmin'@'%' 和 'myadmin'@'localhos
我有以下灵活的搜索查询 Select {vt:code},{vt:productcode},{vw:code},{vw:productcode} from {abcd AS vt JOIN wxyz
好吧,我的电脑开始运行有点缓慢,所以我重置了 Windows,保留了我的文件。因为我的大脑还没有打开,所以我忘记事先备份我的 MySQL 数据库。我仍然拥有所有原始文件,因此我实际上仍然拥有数据库,但
如何将我的 Access 数据库 (.accdb) 转换为 SQLite 数据库 (.sqlite)? 请,任何帮助将不胜感激。 最佳答案 1)如果要转换 db 的结构,则应使用任何 DB 建模工具:
系统检查发现了一些问题: 警告:?:(mysql.W002)未为数据库连接“默认”设置 MySQL 严格模式 提示:MySQL 的严格模式通过将警告升级为错误来修复 MySQL 中的许多数据完整性问题
系统检查发现了一些问题: 警告:?:(mysql.W002)未为数据库连接“默认”设置 MySQL 严格模式 提示:MySQL 的严格模式通过将警告升级为错误来修复 MySQL 中的许多数据完整性问题
我想在相同的 phonegap 应用程序中使用 android 数据库。 更多说明: 我创建了 phonegap 应用程序,但 phonegap 应用程序不支持服务,所以我们已经在 java 中为 a
Time Tracker function clock() { var mytime = new Date(); var seconds
我需要在现有项目上实现一些事件的显示。我无法更改数据库结构。 在我的 Controller 中,我(从 ajax 请求)传递了一个时间戳,并且我需要显示之前的 8 个事件。因此,如果时间戳是(转换后)
我有一个可以收集和显示各种测量值的产品(不会详细介绍)。正如人们所期望的那样,显示部分是一个数据库+建立在其之上的网站(使用 Symfony)。 但是,我们可能还会创建一个 API 来向第三方公开数据
我们将 SQL Server 从 Azure VM 迁移到 Azure SQL 数据库。 Azure VM 为 DS2_V2、2 核、7GB RAM、最大 6400 IOPS Azure SQL 数据
我正在开发一个使用 MongoDB 数据库的程序,但我想问在通过 Java 执行 SQL 时是否可以使用内部数据库进行测试,例如 H2? 最佳答案 你可以尝试使用Testcontainers Test
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 已关闭 9 年前。 此问题似乎与 a specific programming problem, a sof
我正在尝试使用 MSI 身份验证(无需用户名和密码)从 Azure 机器学习服务连接 Azure SQL 数据库。 我正在尝试在 Azure 机器学习服务上建立机器学习模型,目的是我需要数据,这就是我
我在我的 MySQL 数据库中使用这个查询来查找 my_column 不为空的所有行: SELECT * FROM my_table WHERE my_column != ""; 不幸的是,许多行在
我有那个基地:http://sqlfiddle.com/#!2/e5a24/2这是 WordPress 默认模式的简写。我已经删除了该示例不需要的字段。 如您所见,我的结果是“类别 1”的两倍。我喜欢
我有一张这样的 table : mysql> select * from users; +--------+----------+------------+-----------+ | userid
我有表: CREATE TABLE IF NOT EXISTS `category` ( `id` int(11) NOT NULL, `name` varchar(255) NOT NULL
我是一名优秀的程序员,十分优秀!