2016-06-01 82 views
0

我正在使用嵌入在应用程序文件中的数据库。 对于我把Build Action:Content的数据库,它的路由是“Database/Original.db”,但我无法连接。 的错误是在这一行:C#UWP嵌入式SQLite数据库

SQLiteConnection dbConnection = new SQLiteConnection("Database/Original.db"); 

这是我的代码:

PageMetrados.xaml.cs

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Runtime.InteropServices.WindowsRuntime; 
using Windows.Foundation; 
using Windows.Foundation.Collections; 
using Windows.UI.Xaml; 
using Windows.UI.Xaml.Controls; 
using Windows.UI.Xaml.Controls.Primitives; 
using Windows.UI.Xaml.Data; 
using Windows.UI.Xaml.Input; 
using Windows.UI.Xaml.Media; 
using Windows.UI.Xaml.Navigation; 
using Windows.Storage; 
using SQLitePCL; 

namespace Presupuestos 
{ 
      public sealed partial class PageMetrados : Page 
    { 
     public PageMetrados() 
     { 
      this.InitializeComponent(); 
     } 

     private void buttonShowList_Click(object sender, RoutedEventArgs e) 
     { 
      SQLiteConnection dbConnection = new SQLiteConnection("Database/Original.db"); 
      var datos = new List<Metrados_Head>(); 
      string sSQL = @"SELECT 
          [A], 
          [B], 
          [C], 
          [D], 
          [E], 
          [F] 
          FROM Metrados_Head"; 

      ISQLiteStatement dbState = dbConnection.Prepare(sSQL); 

      while (dbState.Step() == SQLiteResult.ROW) 
      { 
       string sA = dbState["A"] as string; 
       string sB = dbState["B"] as string; 
       string sC = dbState["C"] as string; 
       string sD = dbState["D"] as string; 
       string sE = dbState["E"] as string; 
       string sF = dbState["F"] as string; 

       Metrados_Head Datos_Metrados_Head = new Metrados_Head() { A = sA, B = sB, C = sC, D = sD, E = sE, F = sF }; 
       datos.Add(Datos_Metrados_Head); 
      } 
      ListMetrados_Head.ItemsSource = datos;  } 
    } 
} 

Metrados_Head.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace Presupuestos 
{ 
    public class Metrados_Head 
    { 
     public string A { get; set; } 
     public string B { get; set; } 
     public string C { get; set; } 
     public string D { get; set; } 
     public string E { get; set; } 
     public string F { get; set; } 
    } 
} 

据显示在列表视图中:

<ListView x:Name="ListMetrados_Head" HorizontalAlignment="Left" Height="600" Margin="10,109,0,0" VerticalAlignment="Top" Width="1260" BorderBrush="Black" BorderThickness="1" Background="White"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <Grid Width="{Binding ActualWidth, ElementName=ListMetrados_Head}" Padding="0" Margin="0" > 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="80" /> 
         <ColumnDefinition Width="80" /> 
         <ColumnDefinition Width="80" /> 
         <ColumnDefinition Width="80" /> 
         <ColumnDefinition Width="80" /> 
         <ColumnDefinition Width="80" /> 
        </Grid.ColumnDefinitions> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="40"/> 
        </Grid.RowDefinitions> 
        <TextBlock x:Name="TextBlock_A" Grid.Column="0" Text="{Binding Path=A}" TextWrapping="Wrap" /> 
        <TextBox x:Name="TextBox_B" Grid.Column="1" Text="{Binding Path=B}" TextWrapping="Wrap" /> 
        <TextBox x:Name="TextBox_C" Grid.Column="2" Text="{Binding Path=C}" TextWrapping="Wrap" /> 
        <TextBox x:Name="TextBox_D" Grid.Column="3" Text="{Binding Path=D}" TextWrapping="Wrap" /> 
        <TextBox x:Name="TextBox_E" Grid.Column="4" Text="{Binding Path=E}" TextWrapping="Wrap" /> 
        <TextBox x:Name="TextBox_F" Grid.Column="5" Text="{Binding Path=F}" TextWrapping="Wrap" /> 
       </Grid> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
     </ListView> 
+0

而错误是....? – Gusman

+0

在一个地方你写了“Databases/Original.db”,但是在另一个“Database/Original.db”中。 –

+0

这是否是一个有效的路径? –

回答

1

为了获取资源来包装你的应用程序,你应该使用下列形式ms-appx:///Database/Original.db(如果数据库文件夹直接在根文件夹下)

ms-appx:///方案,您可以访问的安装文件夹你的应用。 请记住,安装文件夹中的文件是只读的,因此您无法对其进行更改。

或者这也可能工作/Database/Original.db

你也应该,如果你使用的是有效的路径检查。例如,我在你的问题中看到路径是Databases/Original.db,而在你的代码中是Database/Original.db。确保你使用的是正确的。