0

次のコードを使用して、いくつかの SQL データベースを Android からオンライン サーバーにアップロードしようとしています。

public static void uploadFile(String file,String folder) {

HttpURLConnection conn = null;


String lineEnd = "\r\n";
String twoHyphens = "--";
String boundary = "*****";
try {
    // ------------------ CLIENT REQUEST

    FileInputStream fileInputStream = new FileInputStream(new File(
    path));

    // open a URL connection to the Servlet

    URL url = new URL("http://myserver/upload_file.php");

    // Open a HTTP connection to the URL

    conn = (HttpURLConnection) url.openConnection();

    // Allow Inputs
    conn.setDoInput(true);

    // Allow Outputs
    conn.setDoOutput(true);

    // Don't use a cached copy.
    conn.setUseCaches(false);

    // Use a post method.
    conn.setRequestMethod("POST");

    conn.setRequestProperty("Connection", "Keep-Alive");

    conn.setRequestProperty("Content-Type",
    "multipart/form-data;boundary=" + boundary);

    DataOutputStream dos = new DataOutputStream(conn.getOutputStream());

    dos.writeBytes(twoHyphens + boundary + lineEnd);
    dos.writeBytes("Content-Disposition: post-data; name=uploadedfile;filename="
        + path + "" + lineEnd);
    dos.writeBytes(lineEnd);
    // create a buffer of maximum size

    int bytesAvailable = fileInputStream.available();
    int maxBufferSize = 1000;
    // int bufferSize = Math.min(bytesAvailable, maxBufferSize);
    byte[] buffer = new byte[bytesAvailable];

    // read file and write it into form...

    int bytesRead = fileInputStream.read(buffer, 0, bytesAvailable);

    while (bytesRead > 0) {
        dos.write(buffer, 0, bytesAvailable);
        bytesAvailable = fileInputStream.available();
        bytesAvailable = Math.min(bytesAvailable, maxBufferSize);
        bytesRead = fileInputStream.read(buffer, 0, bytesAvailable);
    }

    dos.writeBytes(lineEnd);
    dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);

    // close streams

    fileInputStream.close();
    dos.flush();
    dos.close();

} catch (MalformedURLException ex) {
    Log.e(TAG, "error: " + ex.getMessage(), ex);
} catch (IOException ioe) {
    Log.e(TAG, "error: " + ioe.getMessage(), ioe);
}

try {
    BufferedReader rd = new BufferedReader(new InputStreamReader(conn
    .getInputStream()));
    String line;
    while ((line = rd.readLine()) != null) {
        Log.e(TAG, "Message: " + line);
    }
    rd.close();

} catch (IOException ioex) {
    Log.e(TAG, "error: " + ioex.getMessage(), ioex);
}
return;
}

すべてうまくいっているように見えますが、結果のファイルを SQLite Administrator で開こうとすると、「閉じたデータセットでこの操作を実行できません」というエラーがスローされます。

なぜこれが起こっているのか誰にも分かりますか?オリジナルとコピーのファイルサイズは同じに見えます。

更新 1: データベースにアクセスしようとすると、アプリによってスローされるエラーは次のとおりです。

android.database.sqlite.SQLiteDatabaseCorruptException: malformed database schema (?) (code 11): , while compiling: SELECT * FROM Table

どんな助けでも大歓迎です。

ありがとう、ジョシュ

4

1 に答える 1