未使用java小程序将mysql结果正确写入文件
我正在尝试使用JavaApplet将数据库记录写入一个文件。但问题是在运行小程序后,我看到文件被创建了,但它包含垃圾数据。我已根据本教程对小程序进行了签名: 我已经尝试将mysql连接器放入创建的jarSaveToFile.jar中。但同样的事情发生了。所以我很困惑数据库连接是否真的发生了。 在构建之后,我的项目结构如下所示,这里我只展示构建的部分:未使用java小程序将mysql结果正确写入文件,java,mysql,jdbc,applet,jnlp,Java,Mysql,Jdbc,Applet,Jnlp,我正在尝试使用JavaApplet将数据库记录写入一个文件。但问题是在运行小程序后,我看到文件被创建了,但它包含垃圾数据。我已根据本教程对小程序进行了签名: 我已经尝试将mysql连接器放入创建的jarSaveToFile.jar中。但同样的事情发生了。所以我很困惑数据库连接是否真的发生了。 在构建之后,我的项目结构如下所示,这里我只展示构建的部分: appletTest/ out/production/appletTest/ a
appletTest/
out/production/appletTest/
applet/SaveToFile.class
SaveToFile.html
SaveToFile.jar
mysql-connector-java-5.1.24-bin.jar
file-applet.jnlp
keystore
在打开html文件到Firefox浏览器后,Chrome没有给出任何响应,不知道为什么!并通过授予小程序运行权限,在同一目录中成功创建data.txt文件
以下是Java代码:
package applet;
public class SaveToFile extends Applet {
public void init() {
try {
getData();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
private void getData() throws SQLException, ClassNotFoundException, IllegalAccessException, InstantiationException {
String myDriver = "com.mysql.jdbc.Driver";
String dbUrl = "jdbc:mysql://localhost/APPLET?user=root&password=root&characterSet=utf8&useUnicode=true&characterEncoding=utf-8&characterSetResults=utf8";
Class.forName(myDriver);
Connection conn = DriverManager.getConnection(dbUrl);
Statement stmt = conn.createStatement();
try {
ResultSet rs = stmt.executeQuery( "SELECT * FROM applet" );
try {
String text = "";
while ( rs.next() ) {
text += rs.getString("title");
}
writeToFile(text);
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
rs.close();
} catch (Throwable ignore) {
ignore.printStackTrace();
}
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
stmt.close();
} catch (Throwable ignore) {
ignore.printStackTrace();
}
}
}
public void writeToFile (String text) {
try {
DataOutputStream dataOut = new DataOutputStream(new FileOutputStream("data.txt"));
dataOut.writeUTF(text);
dataOut.close();
} catch(Exception x) {
x.printStackTrace();
}
}
}
以下是jnlp:
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="" href="">
<information>
<title>Write To File</title>
<vendor>Vendor</vendor>
</information>
<resources>
<!-- Application Resources -->
<j2se version="1.7+"
href="http://java.sun.com/products/autodl/j2se"
max-heap-size="128m"/>
<jar href="SaveToFile.jar" main="true"/>
</resources>
<applet-desc name="Test Applet"
main-class="applet.SaveToFile"
width="22"
height="22"/>
<update check="background"/>
<security>
<all-permissions/>
</security>
</jnlp>
甚至我也尝试过这样的查询:但这次什么也没发生:
SELECT * FROM applet
INTO OUTFILE 'tmp/data.txt'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
此外,如果有人能举一个例子,说明在javascript和小程序之间处理数据库交互时的安全性,这将是非常有帮助的
谢谢好的。我成功地解决了这个问题。我已经提取了mysql连接器,并将所有提取的文件与小程序类文件一起放入归档jar中,mysql数据检索现在运行良好。以下是我在windows中构建部分下使用的命令:
appletTest/
out/production/appletTest/
mkdir tmp
cd tmp
jar -xf ../mysql-connector-java-5.1.24-bin.jar
cd..
jar -cvf SaveToFile.jar applet\SaveToFile.class -C tmp/ .
rmdir tmp /S
使用创建的jar文件作为归档文件对数据库来说是正确的。据我所知,您还没有描述实际的问题。你甚至说“data.txt文件创建成功”@MarkRotteveel:我说该文件包含它不应该包含的垃圾数据。最后一个查询将在服务器上而不是在客户端上创建文件。@MarkRotterVeel:这是写在我的文件上的垃圾:Ȁ摤@马克·罗特维尔:有时候这一次:鸀佃啌乍ㄠ㴠䴠䅹灰敬䍴䱏䵕⁎′‽祍灁汰瑥佃啌乍ㄠ㴠䴠䅹灰敬㉴佃啌乍㈠㴠䴠䅹灰敬㉴佃啌乍ㄠ㴠䴠䅹灰敬㍴佃啌乍㈠㴠䴠䅹灰敬㍴佃啌乍ㄠ㴠䴠䅹灰敬㑴佃啌乍㈠㴠䴠䅹灰敬㑴
SELECT * FROM applet
INTO OUTFILE 'tmp/data.txt'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
appletTest/
out/production/appletTest/
mkdir tmp
cd tmp
jar -xf ../mysql-connector-java-5.1.24-bin.jar
cd..
jar -cvf SaveToFile.jar applet\SaveToFile.class -C tmp/ .
rmdir tmp /S