Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未使用java小程序将mysql结果正确写入文件_Java_Mysql_Jdbc_Applet_Jnlp - Fatal编程技术网

未使用java小程序将mysql结果正确写入文件

未使用java小程序将mysql结果正确写入文件,java,mysql,jdbc,applet,jnlp,Java,Mysql,Jdbc,Applet,Jnlp,我正在尝试使用JavaApplet将数据库记录写入一个文件。但问题是在运行小程序后,我看到文件被创建了,但它包含垃圾数据。我已根据本教程对小程序进行了签名: 我已经尝试将mysql连接器放入创建的jarSaveToFile.jar中。但同样的事情发生了。所以我很困惑数据库连接是否真的发生了。 在构建之后,我的项目结构如下所示,这里我只展示构建的部分: appletTest/ out/production/appletTest/ a

我正在尝试使用JavaApplet将数据库记录写入一个文件。但问题是在运行小程序后,我看到文件被创建了,但它包含垃圾数据。我已根据本教程对小程序进行了签名: 我已经尝试将mysql连接器放入创建的jarSaveToFile.jar中。但同样的事情发生了。所以我很困惑数据库连接是否真的发生了。 在构建之后,我的项目结构如下所示,这里我只展示构建的部分:

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