gpt4 book ai didi

java - 黑莓和 sqlite

转载 作者:行者123 更新时间:2023-12-02 08:31:10 25 4
gpt4 key购买 nike

当我尝试在 Blackberry EclipsePlugin 1.1 中运行下面的代码时

我正在得到

net.rim.device.api.database.DatabaseIOException: File system error (12) Error and my Sqlite DB is in resource folder of the Project.

我已经在模拟器中添加了SDCard

所以请帮我解决这个错误,我也无法将现有数据库复制到SD卡中。

package com.bb.readdb;

/*
* ReadData.java
*
* Research In Motion Limited proprietary and confidential
* Copyright Research In Motion Limited, 2010
*/
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;

import javax.microedition.io.Connector;
import javax.microedition.io.file.FileConnection;
import javax.microedition.io.file.FileSystemRegistry;

import net.rim.device.api.database.Database;
import net.rim.device.api.database.DatabaseException;
import net.rim.device.api.database.DatabaseFactory;
import net.rim.device.api.database.DatabaseSecurityOptions;
import net.rim.device.api.database.Row;
import net.rim.device.api.database.Statement;
import net.rim.device.api.io.URI;
import net.rim.device.api.system.CodeModuleManager;
import net.rim.device.api.system.CodeSigningKey;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.component.Dialog;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.component.RichTextField;
import net.rim.device.api.ui.container.MainScreen;
public class Readdbdata extends UiApplication
{
//public String nydb="nycway232128.db";
public static void main(String[] args)
{
Readdbdata theApp = new Readdbdata();
theApp.enterEventDispatcher();
}
public Readdbdata()
{
pushScreen(new ReadDataScreen());
}
}
class ReadDataScreen extends MainScreen
{
Database d;
public ReadDataScreen()
{
LabelField title = new LabelField("SQLite Read Table Data Sample",
LabelField.ELLIPSIS |
LabelField.USE_ALL_WIDTH);
setTitle(title);
add(new RichTextField("Attempting to retrieve data from " +"Mypeople.db on the SDCard."));
try
{
String nydb="nycway232128.db";
URI myURI = URI.create("file:///SDCard/databases/NycWay/" +"Mypeople.db");
d = DatabaseFactory.openOrCreate(myURI);
//Statement st = d.createStatement("SELECT Name FROM gross ");


//st.prepare();
//st.execute();
//st.close();
//d.close();
boolean sdCardPresent = false;
String root = null;
Enumeration e = FileSystemRegistry.listRoots();
copyFile("Mypeople", "file:///SDCard/databases/NycWay/" );

DatabaseFactory.open(myURI);
Statement st = d.createStatement("SELECT Name FROM People ");
st.prepare();
st.close();

d.close();
}
catch ( Exception e )
{
System.out.println( "@@@@@@@@@NYC IKnwdf pre@@@@@@@@@@@@"+e.toString() );
e.printStackTrace();
}

}
public void copyFile(String srFile, String dtFile)
{
try
{

FileConnection fconn;


fconn = (FileConnection) Connector.open(dtFile,Connector.READ_WRITE);

if(!fconn.exists()) // if file does not exists , create a new one
{
fconn.create();
}
InputStream is = getClass().getResourceAsStream(srFile);
OutputStream os =fconn.openOutputStream();
byte[] buf = new byte[1024];
int len;
while ((len = is.read(buf)) > 0)
{
os.write(buf, 0, len);
}
is.close();
os.close();
}
catch(IOException e)
{

}
}
public void readAndWriteDatabaseFile(FileConnection fileConnection) throws IOException
{
OutputStream outputStream = null;
InputStream inputStream = null;

// Open an input stream to the pre-defined encrypted database bundled
// within this module.
String nydb="Mypeople";
{
/*\*/
inputStream = getClass().getResourceAsStream("/" + nydb);

// Open an output stream to cthe newly created file
outputStream = (OutputStream)fileConnection.openOutputStream();

// Read data from the input stream and write the data to the
// output stream.
byte[] data = new byte[256];
int length = 0;
while (-1 != (length = inputStream.read(data)))
{
outputStream.write(data, 0, length);
}

// Close the connections
if(fileConnection != null)
{
fileConnection.close();
}
if(outputStream != null)
{
outputStream.close();
}
if(inputStream != null)
{
inputStream.close();
}
}

}


}

最佳答案

您必须确保已关闭文件的所有输入/输出流,并且必须在调用 DatabaseFactory.open() 之前关闭文件;

希望这有帮助

关于java - 黑莓和 sqlite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3341101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com