我有一个麻烦内更新数据库(嵌入式)毛伊岛应用程序,之前我添加existinf文件database.db为我的毛伊岛项目与嵌入式资源。现在我删除此database.db,然后使用FTP服务器下载此database.db,但我的应用程序无法捕获绑定数据。。你可以看到这里(我命名为1.0版)连接sqlite数据库,和我的应用程序捕捉绑定数据很好
public static string DatabasePath =>
Path.Combine(Environment.GetFolderPath
(Environment.SpecialFolder.MyDocuments), DatabaseFilename);
private SQLiteConnection _connection;
public SQLiteConnection Connection => _connection ??= new
SQLiteConnection(ConstantsInfo.DatabasePath);
public void Initialize()
{
//1.open target file to filestream
using var dbFileStream = new FileStream(ConstantsInfo.DatabasePath, FileMode.OpenOrCreate);
//2.open resource file database -->resourcestream
using var dbAssetStream = typeof(ProdottiStorage)
.Assembly.GetManifestResourceStream("Dataoffline."+ConstantsInfo.DatabaseFilename);
//3.copy resource stream to filestream
dbAssetStream.CopyTo(dbFileStream);
}
现在(版本2.0)我想更新我的数据库-> database.db(相同的名称,但不同的数据),所以我删除旧的database.db和下载新的database.db从ftp服务器,代码在这里:
public RelayCommand _yesupdate;
public RelayCommand YesUpdate => _yesupdate ??= new
RelayCommand(() =>
{
// Get the object used to communicate with the server.
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://" + ftpInfo.IPV4 + @"/" + ftpInfo.FileName);
request.Method = WebRequestMethods.Ftp.DownloadFile;
//login
request.Credentials = new NetworkCredential(ftpInfo.UseName, ftpInfo.Pwd);
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
string content = reader.ReadToEnd();
content = content.ToUpperInvariant();
string targetFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), ftpInfo.FileName);
using FileStream outputStream = System.IO.File.OpenWrite(targetFile);
using StreamWriter streamWriter = new StreamWriter(outputStream);
streamWriter.Write(content);
Alert.Execute(null);
reader.Close();
response.Close();
结果是我的APP无法获取数据,但ftp服务器显示我下载成功时,我的android设备无法找到database.db,只能看到一个无效文件(缓存)
1条答案
按热度按时间jexiocij1#
需要对应上述数据库的处理方法(在public void Initialize())
此处更改代码,因为在database.db是嵌入资源之前,我们也使用相同的方法打开//1.open目标文件到filestream,并将//3.copy资源流复制到filestream
此处为https://learn.microsoft.com/zh-cn/dotnet/framework/network-programming/how-to-download-files-with-ftp