Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
da6e461b
提交
da6e461b
authored
18 年前
作者:
Thomas Mueller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
--no commit message
--no commit message
上级
7ac143fd
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
432 行增加
和
200 行删除
+432
-200
Backup.java
h2/src/main/org/h2/tools/Backup.java
+39
-151
CreateCluster.java
h2/src/main/org/h2/tools/CreateCluster.java
+1
-1
Csv.java
h2/src/main/org/h2/tools/Csv.java
+13
-5
Restore.java
h2/src/main/org/h2/tools/Restore.java
+167
-0
RunScript.java
h2/src/main/org/h2/tools/RunScript.java
+2
-1
Script.java
h2/src/main/org/h2/tools/Script.java
+155
-0
SimpleResultSet.java
h2/src/main/org/h2/tools/SimpleResultSet.java
+55
-42
没有找到文件。
h2/src/main/org/h2/tools/Backup.java
浏览文件 @
da6e461b
...
...
@@ -4,54 +4,42 @@
*/
package
org
.
h2
.
tools
;
import
java.io.BufferedWriter
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.FileOutputStream
;
import
java.io.FileWriter
;
import
java.io.IOException
;
import
java.io.PrintWriter
;
import
java.sql.Connection
;
import
java.sql.DriverManager
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
import
java.sql.Statement
;
import
java.util.ArrayList
;
import
java.util.zip.ZipEntry
;
import
java.util.zip.ZipInputStream
;
import
java.util.zip.ZipOutputStream
;
import
org.h2.message.Message
;
import
org.h2.store.FileLister
;
import
org.h2.util.FileUtils
;
import
org.h2.util.IOUtils
;
import
org.h2.util.JdbcUtils
;
import
org.h2.util.StringUtils
;
/*
*
*
Creates a backup of a database by extracting the schema and data into a SQL script file
.
/*
*
Backs up a H2 database by creating a .zip file from the database files
.
*
* @author Thomas
*
*/
public
class
Backup
{
private
void
showUsage
()
{
System
.
out
.
println
(
"java "
+
getClass
().
getName
()
+
"
-url <url> -user <user> [-password <pwd>] [-script <file>] [-options <option> ...
]"
);
+
"
[-file <filename>] [-dir <dir>] [-db <database>] [-quiet
]"
);
}
/**
* The command line interface for this tool.
* The options must be split into strings like this: "-
user", "sa
",...
* The options must be split into strings like this: "-
db", "test
",...
* The following options are supported:
* <ul>
* <li>-help or -? (print the list of options)
* </li><li>-url jdbc:h2:... (database URL)
* </li><li>-user username
* </li><li>-password password
* </li><li>-script filename (default file name is backup.sql)
* </li><li>-options to specify a list of options (only for H2)
* </li><li>-file filename (the default is backup.zip)
* </li><li>-dir directory (the default is the current directory)
* </li><li>-db databaseName (all databases if no name is specified)
* </li><li>-quiet does not print progress information
* </li></ul>
*
* @param args the command line arguments
...
...
@@ -60,113 +48,42 @@ public class Backup {
public
static
void
main
(
String
[]
args
)
throws
SQLException
{
new
Backup
().
run
(
args
);
}
private
void
run
(
String
[]
args
)
throws
SQLException
{
String
url
=
null
;
String
user
=
null
;
String
password
=
""
;
String
script
=
"backup.sql"
;
String
options1
=
null
,
options2
=
null
;
String
zipFileName
=
"backup.zip"
;
String
dir
=
"."
;
String
db
=
null
;
boolean
quiet
=
false
;
for
(
int
i
=
0
;
args
!=
null
&&
i
<
args
.
length
;
i
++)
{
if
(
args
[
i
].
equals
(
"-url"
))
{
url
=
args
[++
i
];
}
else
if
(
args
[
i
].
equals
(
"-user"
))
{
user
=
args
[++
i
];
}
else
if
(
args
[
i
].
equals
(
"-password"
))
{
password
=
args
[++
i
];
}
else
if
(
args
[
i
].
equals
(
"-script"
))
{
script
=
args
[++
i
];
}
else
if
(
args
[
i
].
equals
(
"-options"
))
{
StringBuffer
buff1
=
new
StringBuffer
();
StringBuffer
buff2
=
new
StringBuffer
();
i
++;
for
(;
i
<
args
.
length
;
i
++)
{
String
a
=
args
[
i
];
String
upper
=
StringUtils
.
toUpperEnglish
(
a
);
if
(
upper
.
startsWith
(
"NO"
)
||
upper
.
equals
(
"DROP"
))
{
buff1
.
append
(
' '
);
buff1
.
append
(
args
[
i
]);
}
else
{
buff2
.
append
(
' '
);
buff2
.
append
(
args
[
i
]);
}
}
options1
=
buff1
.
toString
();
options2
=
buff2
.
toString
();
if
(
args
[
i
].
equals
(
"-dir"
))
{
dir
=
args
[++
i
];
}
else
if
(
args
[
i
].
equals
(
"-db"
))
{
db
=
args
[++
i
];
}
else
if
(
args
[
i
].
equals
(
"-quiet"
))
{
quiet
=
true
;
}
else
{
showUsage
();
return
;
}
}
if
(
url
==
null
||
user
==
null
||
script
==
null
)
{
showUsage
();
return
;
}
if
(
options1
!=
null
)
{
executeScript
(
url
,
user
,
password
,
script
,
options1
,
options2
);
}
else
{
execute
(
url
,
user
,
password
,
script
);
}
Backup
.
execute
(
zipFileName
,
dir
,
db
,
quiet
);
}
/**
* INTERNAL
*/
public
static
void
executeScript
(
String
url
,
String
user
,
String
password
,
String
fileName
,
String
options1
,
String
options2
)
throws
SQLException
{
Connection
conn
=
null
;
Statement
stat
=
null
;
try
{
org
.
h2
.
Driver
.
load
();
conn
=
DriverManager
.
getConnection
(
url
,
user
,
password
);
stat
=
conn
.
createStatement
();
String
sql
=
"SCRIPT "
+
options1
+
" TO '"
+
fileName
+
"' "
+
options2
;
stat
.
execute
(
sql
);
}
catch
(
Exception
e
)
{
throw
Message
.
convert
(
e
);
}
finally
{
JdbcUtils
.
closeSilently
(
stat
);
JdbcUtils
.
closeSilently
(
conn
);
}
}
/**
* Backs up
a database to a file
.
* Backs up
database files
.
*
* @param
url the database URL
* @param
user the user
name
* @param
password the password
* @param
script the script file
* @param
zipFileName the name of the backup file
* @param
directory the directory
name
* @param
db the database name (null for all databases)
* @param
quiet don't print progress information
* @throws SQLException
*/
public
static
void
execute
(
String
url
,
String
user
,
String
password
,
String
script
)
throws
SQLException
{
Connection
conn
=
null
;
Statement
stat
=
null
;
FileWriter
fileWriter
=
null
;
try
{
org
.
h2
.
Driver
.
load
();
conn
=
DriverManager
.
getConnection
(
url
,
user
,
password
);
stat
=
conn
.
createStatement
();
fileWriter
=
new
FileWriter
(
script
);
PrintWriter
writer
=
new
PrintWriter
(
new
BufferedWriter
(
fileWriter
));
ResultSet
rs
=
stat
.
executeQuery
(
"SCRIPT"
);
while
(
rs
.
next
())
{
String
s
=
rs
.
getString
(
1
);
writer
.
println
(
s
+
";"
);
}
writer
.
close
();
}
catch
(
Exception
e
)
{
throw
Message
.
convert
(
e
);
}
finally
{
JdbcUtils
.
closeSilently
(
stat
);
JdbcUtils
.
closeSilently
(
conn
);
IOUtils
.
closeSilently
(
fileWriter
);
*/
public
static
void
execute
(
String
zipFileName
,
String
directory
,
String
db
,
boolean
quiet
)
throws
SQLException
{
ArrayList
list
=
FileLister
.
getDatabaseFiles
(
directory
,
db
,
true
);
if
(
list
.
size
()
==
0
&&
!
quiet
)
{
System
.
out
.
println
(
"No database files found"
);
return
;
}
}
/**
* INTERNAL
*/
public
static
void
backupFiles
(
String
zipFileName
,
String
directory
,
String
db
)
throws
IOException
,
SQLException
{
File
file
=
new
File
(
zipFileName
);
if
(
file
.
exists
())
{
file
.
delete
();
...
...
@@ -175,7 +92,6 @@ public class Backup {
try
{
out
=
new
FileOutputStream
(
file
);
ZipOutputStream
zipOut
=
new
ZipOutputStream
(
out
);
ArrayList
list
=
FileLister
.
getDatabaseFiles
(
directory
,
db
,
true
);
for
(
int
i
=
0
;
i
<
list
.
size
();
i
++)
{
String
fileName
=
(
String
)
list
.
get
(
i
);
ZipEntry
entry
=
new
ZipEntry
(
FileUtils
.
getFileName
(
fileName
));
...
...
@@ -188,45 +104,17 @@ public class Backup {
IOUtils
.
closeSilently
(
in
);
}
zipOut
.
closeEntry
();
if
(!
quiet
)
{
System
.
out
.
println
(
"processed: "
+
fileName
);
}
}
zipOut
.
closeEntry
();
zipOut
.
close
();
}
catch
(
IOException
e
)
{
throw
Message
.
convert
(
e
);
}
finally
{
IOUtils
.
closeSilently
(
out
);
}
}
/**
* INTERNAL
*/
public
static
void
restoreFiles
(
String
zipFileName
,
String
directory
)
throws
IOException
,
SQLException
{
File
file
=
new
File
(
zipFileName
);
if
(!
file
.
exists
())
{
throw
new
IOException
(
"File not found: "
+
zipFileName
);
}
FileInputStream
in
=
null
;
try
{
in
=
new
FileInputStream
(
file
);
ZipInputStream
zipIn
=
new
ZipInputStream
(
in
);
while
(
true
)
{
ZipEntry
entry
=
zipIn
.
getNextEntry
();
if
(
entry
==
null
)
{
break
;
}
String
fileName
=
entry
.
getName
();
FileOutputStream
out
=
null
;
try
{
out
=
new
FileOutputStream
(
new
File
(
directory
,
fileName
));
IOUtils
.
copy
(
zipIn
,
out
);
}
finally
{
IOUtils
.
closeSilently
(
out
);
}
zipIn
.
closeEntry
();
}
zipIn
.
closeEntry
();
zipIn
.
close
();
}
finally
{
IOUtils
.
closeSilently
(
in
);
}
}
}
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/tools/CreateCluster.java
浏览文件 @
da6e461b
...
...
@@ -104,7 +104,7 @@ public class CreateCluster {
// cannot change the data while it is restoring the second database. But there is currently no exclusive mode.
String
scriptFile
=
"backup.sql"
;
Backup
.
execute
(
urlSource
,
user
,
password
,
scriptFile
);
Script
.
execute
(
urlSource
,
user
,
password
,
scriptFile
);
RunScript
.
execute
(
urlTarget
,
user
,
password
,
scriptFile
,
null
,
false
);
new
File
(
scriptFile
).
delete
();
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/tools/Csv.java
浏览文件 @
da6e461b
...
...
@@ -9,6 +9,7 @@ import java.sql.*;
import
java.util.ArrayList
;
import
org.h2.util.IOUtils
;
import
org.h2.util.JdbcUtils
;
import
org.h2.util.StringUtils
;
/**
...
...
@@ -47,11 +48,13 @@ public class Csv implements SimpleRowSource {
* @param fileName
* @param rs the result set
* @param charset the charset or null to use UTF-8
* @return the number of rows written
* @throws SQLException
*/
public
void
write
(
String
fileName
,
ResultSet
rs
,
String
charset
)
throws
SQLException
{
public
int
write
(
String
fileName
,
ResultSet
rs
,
String
charset
)
throws
SQLException
{
ResultSetMetaData
meta
=
rs
.
getMetaData
();
init
(
fileName
,
charset
);
int
rows
=
0
;
try
{
initWrite
();
int
columnCount
=
meta
.
getColumnCount
();
...
...
@@ -65,12 +68,15 @@ public class Csv implements SimpleRowSource {
row
[
i
]
=
rs
.
getString
(
i
+
1
);
}
writeRow
(
row
);
rows
++;
}
close
()
;
return
rows
;
}
catch
(
IOException
e
)
{
throw
convertException
(
"IOException writing file "
+
fileName
,
e
);
}
finally
{
close
();
JdbcUtils
.
closeSilently
(
rs
);
}
rs
.
close
();
}
/**
...
...
@@ -80,13 +86,15 @@ public class Csv implements SimpleRowSource {
* @param fileName the file name
* @param sql the query
* @param charset the charset or null to use UTF-8
* @return the number of rows written
* @throws SQLException
*/
public
void
write
(
Connection
conn
,
String
fileName
,
String
sql
,
String
charset
)
throws
SQLException
{
public
int
write
(
Connection
conn
,
String
fileName
,
String
sql
,
String
charset
)
throws
SQLException
{
Statement
stat
=
conn
.
createStatement
();
ResultSet
rs
=
stat
.
executeQuery
(
sql
);
write
(
fileName
,
rs
,
charset
);
int
rows
=
write
(
fileName
,
rs
,
charset
);
stat
.
close
();
return
rows
;
}
/**
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/tools/Restore.java
0 → 100644
浏览文件 @
da6e461b
/*
* Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
tools
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.FileOutputStream
;
import
java.io.IOException
;
import
java.sql.SQLException
;
import
java.util.zip.ZipEntry
;
import
java.util.zip.ZipInputStream
;
import
org.h2.message.Message
;
import
org.h2.store.FileLister
;
import
org.h2.util.IOUtils
;
/*
* Restores a H2 database by extracting the database files from a .zip file.
*
* @author Thomas
*/
public
class
Restore
{
private
void
showUsage
()
{
System
.
out
.
println
(
"java "
+
getClass
().
getName
()
+
" [-file <filename>] [-dir <dir>] [-db <database>] [-quiet]"
);
}
/**
* The command line interface for this tool.
* The options must be split into strings like this: "-db", "test",...
* The following options are supported:
* <ul>
* <li>-help or -? (print the list of options)
* </li><li>-file filename (the default is backup.zip)
* </li><li>-dir directory (the default is the current directory)
* </li><li>-db databaseName (as stored in the backup if no name is specified)
* </li><li>-quiet does not print progress information
* </li></ul>
*
* @param args the command line arguments
* @throws SQLException
*/
public
static
void
main
(
String
[]
args
)
throws
SQLException
{
new
Restore
().
run
(
args
);
}
private
void
run
(
String
[]
args
)
throws
SQLException
{
String
zipFileName
=
"backup.zip"
;
String
dir
=
"."
;
String
db
=
null
;
boolean
quiet
=
false
;
for
(
int
i
=
0
;
args
!=
null
&&
i
<
args
.
length
;
i
++)
{
if
(
args
[
i
].
equals
(
"-dir"
))
{
dir
=
args
[++
i
];
}
else
if
(
args
[
i
].
equals
(
"-db"
))
{
db
=
args
[++
i
];
}
else
if
(
args
[
i
].
equals
(
"-quiet"
))
{
quiet
=
true
;
}
else
{
showUsage
();
return
;
}
}
Restore
.
execute
(
zipFileName
,
dir
,
db
,
quiet
);
}
private
static
String
getOriginalDbName
(
File
file
,
String
db
)
throws
IOException
{
FileInputStream
in
=
null
;
try
{
in
=
new
FileInputStream
(
file
);
ZipInputStream
zipIn
=
new
ZipInputStream
(
in
);
String
originalDbName
=
null
;
boolean
multiple
=
false
;
while
(
true
)
{
ZipEntry
entry
=
zipIn
.
getNextEntry
();
if
(
entry
==
null
)
{
break
;
}
String
fileName
=
entry
.
getName
();
zipIn
.
closeEntry
();
String
name
=
FileLister
.
getDatabaseNameFromFileName
(
fileName
);
if
(
name
!=
null
)
{
if
(
db
.
equals
(
name
))
{
originalDbName
=
name
;
// we found the correct database
break
;
}
else
if
(
originalDbName
==
null
)
{
originalDbName
=
name
;
// we found a database, but maybe another one
}
else
{
// we have found multiple databases, but not the correct one
multiple
=
true
;
}
}
}
zipIn
.
close
();
if
(
multiple
&&
!
originalDbName
.
equals
(
db
))
{
throw
new
IOException
(
"Multiple databases found, but not "
+
db
);
}
return
originalDbName
;
}
finally
{
IOUtils
.
closeSilently
(
in
);
}
}
/**
* Restores database files.
*
* @param zipFileName the name of the backup file
* @param directory the directory name
* @param db the database name (null for all databases)
* @param quiet don't print progress information
* @throws SQLException
*/
public
static
void
execute
(
String
zipFileName
,
String
directory
,
String
db
,
boolean
quiet
)
throws
SQLException
{
FileInputStream
in
=
null
;
try
{
File
file
=
new
File
(
zipFileName
);
if
(!
file
.
exists
())
{
throw
new
IOException
(
"File not found: "
+
zipFileName
);
}
String
originalDbName
=
null
;
if
(
db
!=
null
)
{
originalDbName
=
getOriginalDbName
(
file
,
db
);
if
(
originalDbName
==
null
)
{
throw
new
IOException
(
"No database named "
+
db
+
" found"
);
}
}
in
=
new
FileInputStream
(
file
);
ZipInputStream
zipIn
=
new
ZipInputStream
(
in
);
while
(
true
)
{
ZipEntry
entry
=
zipIn
.
getNextEntry
();
if
(
entry
==
null
)
{
break
;
}
String
fileName
=
entry
.
getName
();
boolean
copy
=
false
;
if
(
db
==
null
)
{
copy
=
true
;
}
else
if
(
fileName
.
startsWith
(
originalDbName
))
{
fileName
=
db
+
fileName
.
substring
(
originalDbName
.
length
());
copy
=
true
;
}
if
(
copy
)
{
FileOutputStream
out
=
null
;
try
{
out
=
new
FileOutputStream
(
new
File
(
directory
,
fileName
));
IOUtils
.
copy
(
zipIn
,
out
);
}
finally
{
IOUtils
.
closeSilently
(
out
);
}
}
zipIn
.
closeEntry
();
}
zipIn
.
closeEntry
();
zipIn
.
close
();
}
catch
(
IOException
e
)
{
throw
Message
.
convert
(
e
);
}
finally
{
IOUtils
.
closeSilently
(
in
);
}
}
}
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/tools/RunScript.java
浏览文件 @
da6e461b
...
...
@@ -21,6 +21,7 @@ import java.util.Iterator;
import
org.h2.engine.Constants
;
import
org.h2.message.Message
;
import
org.h2.util.ClassUtils
;
import
org.h2.util.JdbcUtils
;
import
org.h2.util.ScriptReader
;
import
org.h2.util.StringUtils
;
...
...
@@ -89,7 +90,7 @@ public class RunScript {
}
else
if
(
args
[
i
].
equals
(
"-driver"
))
{
String
driver
=
args
[++
i
];
try
{
Class
.
forName
(
driver
);
Class
Utils
.
loadClass
(
driver
);
}
catch
(
ClassNotFoundException
e
)
{
throw
Message
.
convert
(
e
);
}
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/tools/Script.java
0 → 100644
浏览文件 @
da6e461b
/*
* Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
tools
;
import
java.io.BufferedWriter
;
import
java.io.FileWriter
;
import
java.io.PrintWriter
;
import
java.sql.Connection
;
import
java.sql.DriverManager
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
import
java.sql.Statement
;
import
org.h2.message.Message
;
import
org.h2.util.IOUtils
;
import
org.h2.util.JdbcUtils
;
import
org.h2.util.StringUtils
;
/**
* Creates a SQL script file by extracting the schema and data of a database.
*
* @author Thomas
*/
public
class
Script
{
private
void
showUsage
()
{
System
.
out
.
println
(
"java "
+
getClass
().
getName
()
+
" -url <url> -user <user> [-password <pwd>] [-file <filename>] [-options <option> ...]"
);
}
/**
* The command line interface for this tool.
* The options must be split into strings like this: "-user", "sa",...
* The following options are supported:
* <ul>
* <li>-help or -? (print the list of options)
* </li><li>-url jdbc:h2:... (database URL)
* </li><li>-user username
* </li><li>-password password
* </li><li>-file filename (default file name is backup.sql)
* </li><li>-options to specify a list of options (only for H2)
* </li></ul>
*
* @param args the command line arguments
* @throws SQLException
*/
public
static
void
main
(
String
[]
args
)
throws
SQLException
{
new
Script
().
run
(
args
);
}
private
void
run
(
String
[]
args
)
throws
SQLException
{
String
url
=
null
;
String
user
=
null
;
String
password
=
""
;
String
file
=
"backup.sql"
;
String
options1
=
null
,
options2
=
null
;
for
(
int
i
=
0
;
args
!=
null
&&
i
<
args
.
length
;
i
++)
{
if
(
args
[
i
].
equals
(
"-url"
))
{
url
=
args
[++
i
];
}
else
if
(
args
[
i
].
equals
(
"-user"
))
{
user
=
args
[++
i
];
}
else
if
(
args
[
i
].
equals
(
"-password"
))
{
password
=
args
[++
i
];
}
else
if
(
args
[
i
].
equals
(
"-file"
))
{
file
=
args
[++
i
];
}
else
if
(
args
[
i
].
equals
(
"-options"
))
{
StringBuffer
buff1
=
new
StringBuffer
();
StringBuffer
buff2
=
new
StringBuffer
();
i
++;
for
(;
i
<
args
.
length
;
i
++)
{
String
a
=
args
[
i
];
String
upper
=
StringUtils
.
toUpperEnglish
(
a
);
if
(
upper
.
startsWith
(
"NO"
)
||
upper
.
equals
(
"DROP"
))
{
buff1
.
append
(
' '
);
buff1
.
append
(
args
[
i
]);
}
else
{
buff2
.
append
(
' '
);
buff2
.
append
(
args
[
i
]);
}
}
options1
=
buff1
.
toString
();
options2
=
buff2
.
toString
();
}
else
{
showUsage
();
return
;
}
}
if
(
url
==
null
||
user
==
null
||
file
==
null
)
{
showUsage
();
return
;
}
if
(
options1
!=
null
)
{
executeScript
(
url
,
user
,
password
,
file
,
options1
,
options2
);
}
else
{
execute
(
url
,
user
,
password
,
file
);
}
}
/**
* INTERNAL
*/
public
static
void
executeScript
(
String
url
,
String
user
,
String
password
,
String
fileName
,
String
options1
,
String
options2
)
throws
SQLException
{
Connection
conn
=
null
;
Statement
stat
=
null
;
try
{
org
.
h2
.
Driver
.
load
();
conn
=
DriverManager
.
getConnection
(
url
,
user
,
password
);
stat
=
conn
.
createStatement
();
String
sql
=
"SCRIPT "
+
options1
+
" TO '"
+
fileName
+
"' "
+
options2
;
stat
.
execute
(
sql
);
}
catch
(
Exception
e
)
{
throw
Message
.
convert
(
e
);
}
finally
{
JdbcUtils
.
closeSilently
(
stat
);
JdbcUtils
.
closeSilently
(
conn
);
}
}
/**
* Backs up a database to a file.
*
* @param url the database URL
* @param user the user name
* @param password the password
* @param fileName the script file
* @throws SQLException
*/
public
static
void
execute
(
String
url
,
String
user
,
String
password
,
String
fileName
)
throws
SQLException
{
Connection
conn
=
null
;
Statement
stat
=
null
;
FileWriter
fileWriter
=
null
;
try
{
org
.
h2
.
Driver
.
load
();
conn
=
DriverManager
.
getConnection
(
url
,
user
,
password
);
stat
=
conn
.
createStatement
();
fileWriter
=
new
FileWriter
(
fileName
);
PrintWriter
writer
=
new
PrintWriter
(
new
BufferedWriter
(
fileWriter
));
ResultSet
rs
=
stat
.
executeQuery
(
"SCRIPT"
);
while
(
rs
.
next
())
{
String
s
=
rs
.
getString
(
1
);
writer
.
println
(
s
+
";"
);
}
writer
.
close
();
}
catch
(
Exception
e
)
{
throw
Message
.
convert
(
e
);
}
finally
{
JdbcUtils
.
closeSilently
(
stat
);
JdbcUtils
.
closeSilently
(
conn
);
IOUtils
.
closeSilently
(
fileWriter
);
}
}
}
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/tools/SimpleResultSet.java
浏览文件 @
da6e461b
...
...
@@ -209,8 +209,11 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData {
* @return the value
*/
public
byte
getByte
(
int
columnIndex
)
throws
SQLException
{
Number
v
=
(
Number
)
get
(
columnIndex
);
return
v
==
null
?
0
:
v
.
byteValue
();
Object
o
=
get
(
columnIndex
);
if
(
o
!=
null
&&
!(
o
instanceof
Number
))
{
o
=
Byte
.
decode
(
o
.
toString
());
}
return
o
==
null
?
0
:
((
Number
)
o
).
byteValue
();
}
/**
...
...
@@ -219,8 +222,11 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData {
* @return the value
*/
public
double
getDouble
(
int
columnIndex
)
throws
SQLException
{
Number
v
=
(
Number
)
get
(
columnIndex
);
return
v
==
null
?
0
:
v
.
doubleValue
();
Object
o
=
get
(
columnIndex
);
if
(
o
!=
null
&&
!(
o
instanceof
Number
))
{
return
Double
.
parseDouble
(
o
.
toString
());
}
return
o
==
null
?
0
:
((
Number
)
o
).
doubleValue
();
}
/**
...
...
@@ -229,8 +235,11 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData {
* @return the value
*/
public
float
getFloat
(
int
columnIndex
)
throws
SQLException
{
Number
v
=
(
Number
)
get
(
columnIndex
);
return
v
==
null
?
0
:
v
.
floatValue
();
Object
o
=
get
(
columnIndex
);
if
(
o
!=
null
&&
!(
o
instanceof
Number
))
{
return
Float
.
parseFloat
(
o
.
toString
());
}
return
o
==
null
?
0
:
((
Number
)
o
).
floatValue
();
}
/**
...
...
@@ -239,8 +248,11 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData {
* @return the value
*/
public
int
getInt
(
int
columnIndex
)
throws
SQLException
{
Number
v
=
(
Number
)
get
(
columnIndex
);
return
v
==
null
?
0
:
v
.
intValue
();
Object
o
=
get
(
columnIndex
);
if
(
o
!=
null
&&
!(
o
instanceof
Number
))
{
o
=
Integer
.
decode
(
o
.
toString
());
}
return
o
==
null
?
0
:
((
Number
)
o
).
intValue
();
}
/**
...
...
@@ -249,8 +261,11 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData {
* @return the value
*/
public
long
getLong
(
int
columnIndex
)
throws
SQLException
{
Number
v
=
(
Number
)
get
(
columnIndex
);
return
v
==
null
?
0
:
v
.
longValue
();
Object
o
=
get
(
columnIndex
);
if
(
o
!=
null
&&
!(
o
instanceof
Number
))
{
o
=
Long
.
decode
(
o
.
toString
());
}
return
o
==
null
?
0
:
((
Number
)
o
).
longValue
();
}
/**
...
...
@@ -259,8 +274,11 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData {
* @return the value
*/
public
short
getShort
(
int
columnIndex
)
throws
SQLException
{
Number
v
=
(
Number
)
get
(
columnIndex
);
return
v
==
null
?
0
:
v
.
shortValue
();
Object
o
=
get
(
columnIndex
);
if
(
o
!=
null
&&
!(
o
instanceof
Number
))
{
o
=
Short
.
decode
(
o
.
toString
());
}
return
o
==
null
?
0
:
((
Number
)
o
).
shortValue
();
}
/**
...
...
@@ -269,8 +287,11 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData {
* @return the value
*/
public
boolean
getBoolean
(
int
columnIndex
)
throws
SQLException
{
Boolean
v
=
(
Boolean
)
get
(
columnIndex
);
return
v
==
null
?
false
:
v
.
booleanValue
();
Object
o
=
get
(
columnIndex
);
if
(
o
!=
null
&&
!(
o
instanceof
Boolean
))
{
o
=
Boolean
.
valueOf
(
o
.
toString
());
}
return
o
==
null
?
false
:
((
Boolean
)
o
).
booleanValue
();
}
/**
...
...
@@ -307,8 +328,7 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData {
* @return the value
*/
public
byte
getByte
(
String
columnName
)
throws
SQLException
{
Number
v
=
(
Number
)
get
(
columnName
);
return
v
==
null
?
0
:
v
.
byteValue
();
return
getByte
(
findColumn
(
columnName
));
}
/**
...
...
@@ -317,8 +337,7 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData {
* @return the value
*/
public
double
getDouble
(
String
columnName
)
throws
SQLException
{
Number
v
=
(
Number
)
get
(
columnName
);
return
v
==
null
?
0
:
v
.
doubleValue
();
return
getDouble
(
findColumn
(
columnName
));
}
/**
...
...
@@ -327,8 +346,7 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData {
* @return the value
*/
public
float
getFloat
(
String
columnName
)
throws
SQLException
{
Number
v
=
(
Number
)
get
(
columnName
);
return
v
==
null
?
0
:
v
.
floatValue
();
return
getFloat
(
findColumn
(
columnName
));
}
/**
...
...
@@ -353,8 +371,7 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData {
* @return the value
*/
public
int
getInt
(
String
columnName
)
throws
SQLException
{
Number
v
=
(
Number
)
get
(
columnName
);
return
v
==
null
?
0
:
v
.
intValue
();
return
getInt
(
findColumn
(
columnName
));
}
/**
...
...
@@ -363,8 +380,7 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData {
* @return the value
*/
public
long
getLong
(
String
columnName
)
throws
SQLException
{
Number
v
=
(
Number
)
get
(
columnName
);
return
v
==
null
?
0
:
v
.
longValue
();
return
getLong
(
findColumn
(
columnName
));
}
/**
...
...
@@ -373,8 +389,7 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData {
* @return the value
*/
public
short
getShort
(
String
columnName
)
throws
SQLException
{
Number
v
=
(
Number
)
get
(
columnName
);
return
v
==
null
?
0
:
v
.
shortValue
();
return
getShort
(
findColumn
(
columnName
));
}
/**
...
...
@@ -383,8 +398,7 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData {
* @return the value
*/
public
boolean
getBoolean
(
String
columnName
)
throws
SQLException
{
Boolean
v
=
(
Boolean
)
get
(
columnName
);
return
v
==
null
?
false
:
v
.
booleanValue
();
return
getBoolean
(
findColumn
(
columnName
));
}
/**
...
...
@@ -393,7 +407,7 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData {
* @return the value
*/
public
byte
[]
getBytes
(
String
columnName
)
throws
SQLException
{
return
(
byte
[])
get
(
columnName
);
return
getBytes
(
findColumn
(
columnName
)
);
}
/**
...
...
@@ -402,7 +416,11 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData {
* @return the value
*/
public
BigDecimal
getBigDecimal
(
int
columnIndex
)
throws
SQLException
{
return
(
BigDecimal
)
get
(
columnIndex
);
Object
o
=
get
(
columnIndex
);
if
(
o
!=
null
&&
!(
o
instanceof
BigDecimal
))
{
o
=
new
BigDecimal
(
o
.
toString
());
}
return
(
BigDecimal
)
o
;
}
/**
...
...
@@ -465,7 +483,7 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData {
* @return the value
*/
public
Object
getObject
(
String
columnName
)
throws
SQLException
{
return
get
(
columnName
);
return
get
Object
(
findColumn
(
columnName
)
);
}
/**
...
...
@@ -474,8 +492,7 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData {
* @return the value
*/
public
String
getString
(
String
columnName
)
throws
SQLException
{
Object
o
=
get
(
columnName
);
return
o
==
null
?
null
:
o
.
toString
();
return
getString
(
findColumn
(
columnName
));
}
/**
...
...
@@ -484,7 +501,7 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData {
* @return the value
*/
public
BigDecimal
getBigDecimal
(
String
columnName
)
throws
SQLException
{
return
(
BigDecimal
)
get
(
columnName
);
return
getBigDecimal
(
findColumn
(
columnName
)
);
}
/**
...
...
@@ -493,7 +510,7 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData {
* @return the value
*/
public
Date
getDate
(
String
columnName
)
throws
SQLException
{
return
(
Date
)
get
(
columnName
);
return
getDate
(
findColumn
(
columnName
)
);
}
/**
...
...
@@ -502,7 +519,7 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData {
* @return the value
*/
public
Time
getTime
(
String
columnName
)
throws
SQLException
{
return
(
Time
)
get
(
columnName
);
return
getTime
(
findColumn
(
columnName
)
);
}
/**
...
...
@@ -511,7 +528,7 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData {
* @return the value
*/
public
Timestamp
getTimestamp
(
String
columnName
)
throws
SQLException
{
return
(
Timestamp
)
get
(
columnName
);
return
getTimestamp
(
findColumn
(
columnName
)
);
}
// ---- result set meta data ---------------------------------------------
...
...
@@ -1202,16 +1219,12 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData {
return
new
SQLException
(
"Feature not supported"
,
"HYC00"
);
}
private
Object
get
(
String
columnName
)
throws
SQLException
{
return
get
(
findColumn
(
columnName
));
}
private
void
checkColumnIndex
(
int
columnIndex
)
throws
SQLException
{
if
(
columnIndex
<
0
||
columnIndex
>=
columns
.
size
())
{
throw
new
SQLException
(
"Invalid column index "
+
(
columnIndex
+
1
),
"90009"
);
}
}
private
Object
get
(
int
columnIndex
)
throws
SQLException
{
if
(
currentRow
==
null
)
{
throw
new
SQLException
(
"No data is available"
,
"02000"
);
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论