3 / 3 / 0
Регистрация: 21.01.2015
Сообщений: 90
|
|
|
|
Пишет The database file is locked
10.05.2019, 13:04. Показов 1073. Ответов 0
Проблема при выполнении функции updatePrices в классе SQL
ошибка: | SQL | 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
57
58
59
60
61
62
| java.sql.SQLException: [SQLITE_BUSY] The DATABASE file IS locked (DATABASE IS locked)
at org.sqlite.DB.newSQLException(DB.java:383)
at org.sqlite.DB.newSQLException(DB.java:387)
at org.sqlite.DB.execute(DB.java:339)
at org.sqlite.PrepStmt.execute(PrepStmt.java:65)
at classes.SQL.execStatement(SQL.java:77)
at classes.SQL.updatePrices(SQL.java:104)
at classes.MainController.lambda$search$1(MainController.java:215)
at javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at javafx.base/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at javafx.base/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
at javafx.base/javafx.event.Event.fireEvent(Event.java:198)
at javafx.graphics/javafx.scene.Node.fireEvent(Node.java:8879)
at javafx.controls/javafx.scene.control.Button.fire(Button.java:200)
at javafx.controls/com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:206)
at javafx.controls/com.sun.javafx.scene.control.inputmap.InputMap.handle(InputMap.java:274)
at javafx.base/com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
at javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at javafx.base/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at javafx.base/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
at javafx.base/javafx.event.Event.fireEvent(Event.java:198)
at javafx.graphics/javafx.scene.Scene$MouseHandler.process(Scene.java:3851)
at javafx.graphics/javafx.scene.Scene$MouseHandler.access$1200(Scene.java:3579)
at javafx.graphics/javafx.scene.Scene.processMouseEvent(Scene.java:1849)
at javafx.graphics/javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2588)
at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:397)
at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:389)
at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:434)
at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:390)
at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:433)
at javafx.graphics/com.sun.glass.ui.View.handleMouseEvent(VIEW.java:556)
at javafx.graphics/com.sun.glass.ui.View.notifyMouse(VIEW.java:942)
at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
at java.base/java.lang.Thread.run(Thread.java:835) |
|
Код класса SQL:
| Java | 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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
| package classes;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
public class SQL
{
private Connection conn=null;
private String path = "src/resources/SQLdb.s3db";
private PreparedStatement prepStatmt;
SQL()
{
try
{
if (conn==null)
{
Class.forName("org.sqlite.JDBC");
conn = DriverManager.getConnection("jdbc:sqlite:" + path);
}
System.out.println("SQL: База Подключена!");
} catch (SQLException | ClassNotFoundException e)
{
e.printStackTrace();
}
}
public void execute(String query)
{
try
{
Statement statmt;
statmt = conn.createStatement();
statmt.execute(query);
} catch (SQLException e)
{
e.printStackTrace();
}
}
public ResultSet execQuery(String query)
{
try
{
Statement statmt;
statmt = conn.createStatement();
return statmt.executeQuery(query);
} catch (SQLException e)
{
e.printStackTrace();
}
return null;
}
public void prepareStatement(String query)
{
try
{
prepStatmt = this.conn.prepareStatement(query);
} catch (SQLException e)
{
e.printStackTrace();
}
}
public void execStatement(String[] params)
{
try
{
for (int i = 0; i < params.length; i++)
{
prepStatmt.setObject(i + 1, params[i]);
}
prepStatmt.execute();
} catch (SQLException e)
{
e.printStackTrace();
}
}
public static void updatePrices() throws SQLException
{
SQL sql = new SQL();
ResultSet resSet = sql.execQuery("SELECT ISBN FROM BooksTrack");
sql.prepareStatement("INSERT OR IGNORE INTO PriceStat(ISBN, store, date, price, ref)" +
" VALUES(?,?,?,?,?)");
SimpleDateFormat date = new SimpleDateFormat("dd/MM/yyyy");
List<Book> books;
while(resSet.next())
{
String isbn = resSet.getString("ISBN");
System.out.println(isbn);
for (Parser p : Parser.parsers.values())
{
books = p.search(isbn);
if(books.size()>0)
{
String[] params = {isbn, Parser.getParserKey(p), date.format(new Date()),
String.valueOf(books.get(0).price), books.get(0).ref };
sql.execStatement(params);
}
}
}
}
} |
|
кусок кода где вызывается функция:
| Java | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| track.setOnAction(e->
{
try
{
if(sql.execQuery("SELECT * FROM BooksTrack WHERE ISBN = '"+b.ISBN+"'").next())
{
sql.execute("DELETE FROM BooksTrack WHERE ISBN = '"+b.ISBN+"'");
//sql.execute("DELETE FROM PriceStat WHERE ISBN = "+b.ISBN);
track.getStyleClass().removeAll("green");
track.setText("Отслеживать");
}
else
{
sql.execute("INSERT INTO BooksTrack(ISBN,Name,Authors,Image) VALUES('" + b.ISBN +
"','"+b.name+ "','"+b.author+ "','"+b.img+"')");
SQL.updatePrices();
track.getStyleClass().add("green");
track.setText("Не отслеживать");
}
} catch (SQLException ex)
{
ex.printStackTrace();
}
}); |
|
0
|