Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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
SQLite与WPF和ASP.NET MVC的最佳实践?_.net_Sqlite - Fatal编程技术网

SQLite与WPF和ASP.NET MVC的最佳实践?

SQLite与WPF和ASP.NET MVC的最佳实践?,.net,sqlite,.net,Sqlite,在WPF和ASP.NET MVC中使用SQLite的正确方法是什么 在WPF中,我在名为App_Data的目录中有一个test.sqlite文件,但当我编译并运行它时,它不会将数据库复制到../bin/Debug中,因此它当然找不到它。但是如果我手动将test.sqlite文件复制到../bin/Debug中,那么它就可以工作了。但这不可能是开发一个应用程序的方式,它有一个本地数据库,可以读取和写入,对吗?如何将数据库标记为“应用程序的一部分”,以便在编译和运行数据库时可以复制并使用它?或者这

在WPF和ASP.NET MVC中使用SQLite的正确方法是什么

  • 在WPF中,我在名为App_Data的目录中有一个test.sqlite文件,但当我编译并运行它时,它不会将数据库复制到../bin/Debug中,因此它当然找不到它。但是如果我手动将test.sqlite文件复制到../bin/Debug中,那么它就可以工作了。但这不可能是开发一个应用程序的方式,它有一个本地数据库,可以读取和写入,对吗?如何将数据库标记为“应用程序的一部分”,以便在编译和运行数据库时可以复制并使用它?或者这是开发/发布过程的一部分?我在这里遗漏了什么,我想我这里有一个网络隐喻,它不适用于Windows应用程序的做事方式

  • 在ASP.MVC中,我复制了在WPF中访问数据库的相同代码,但它在connection.open()行上一直说“无法打开数据库”。我有“./App_Data/test.sqlite”,我知道它是访问文件的正确位置。但是,我尝试将文本文件写入“./App_data”,并获得了一个未经授权的访问异常”,因此我认为问题在于我无权在此处读/写。我如何更改该文件

        private string getData()
    {
        StringBuilder sb = new StringBuilder();
        //string fullPathAndFileName = Server.MapPath("App_Data/testnew.sqlite");
        using (SQLiteConnection conn = 
              new SQLiteConnection(@"Data Source=" + Server.MapPath("App_Data/testnew.sqlite")))
        {
            StringBuilder query = new StringBuilder();
            query.Append("SELECT * ");
            query.Append("FROM members ");
            query.Append("ORDER BY firstName");
            using (SQLiteCommand cmd = new SQLiteCommand(query.ToString(), conn))
            {
                conn.Open();
                using (SQLiteDataReader dr = cmd.ExecuteReader())
                {
                    while (dr.Read())
                    {
                        //Console.WriteLine(dr.GetValue(0) + " " + dr.GetValue(1));  
                        string id = dr.GetValue(0).ToString();
                        string firstName = dr.GetValue(1).ToString();
                        sb.Append(firstName + ", ");
    
                    }
                }
            }
        }
        return sb.ToString();
    
    }
    

您可以将test.sqlite文件添加到WPF项目中,并在“属性”窗口中指定“复制到输出目录”:“始终复制”。这样,每次编译项目时,文件都会自动复制到输出目录

关于您的UnauthorizedAccessException,您是否尝试为ASP.Net服务帐户授予App_数据文件夹的读写权限?要查找用于运行应用程序池的帐户,您可以编写一个简单的test.aspx页面:

<%@ Page Language="C#" %>
<script runat="server">
  protected override void OnLoad(EventArgs e)
  {
      Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name);
      base.OnLoad(e);
  }
</script>

受保护的覆盖无效加载(事件参数e)
{
Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name);
基础荷载(e);
}