标签: system.data.sqlite

在System.Data.SQLite中设置ConnectionTimeout

我认为我的SQLite连接遇到数据库连接超时,但我不确定如何提高连接超时.可以使用ConnectionString.DefaultTimeout设置命令超时,但Connection.ConnectionTimout是只读的.有什么建议?

谢谢,Brian

c# sqlite system.data.sqlite

3
推荐指数
2
解决办法
6200
查看次数

C#.net - > SQLite错误:无法打开数据库文件

我收到"System.Data.SQLite.SQLiteException:无法打开数据库文件." 当我尝试访问数据库以在我的程序"第一次"打开时保存记录.

这是事情,它在Visual Studio中本地调试时工作正常,但是当我在安装程序中打包程序时停止工作,然后在某处安装程序.

我猜测它是数据库的位置,我刚刚在没有路径的database.s3db中设置了它,因为它存储在程序的exe旁边,但是怎么会导致问题呢?

我很茫然,任何有关解决这个问题的进一步想法或建议都将不胜感激.

.net c# sqlite system.data.sqlite

3
推荐指数
1
解决办法
5481
查看次数

获取最后插入的ID

我目前正在使用下面的方法来获取最后插入的行的ID.

    Database.ExecuteNonQuery(query, parameters);

    //if another client/connection inserts a record at this time, 
    //could the line below return the incorrect row ID?
    int fileid = Convert.ToInt32(Database.Scalar("SELECT last_insert_rowid()"));
    return fileid;
Run Code Online (Sandbox Code Playgroud)

到目前为止,这种方法工作正常,但我不确定它是否完全可靠.

假设有两个客户端应用程序,每个应用程序都有自己独立的数据库连接,它们在同一时间调用上面的服务器端方法.请记住,客户端线程并行运行,并且SQLite一次只能运行一个操作(或者我听说过),一个客户端实例是否可以返回由插入的记录的行ID另一个例子?

最后,是否有更好的方法来获取最后插入的行ID?

c# sqlite system.data.sqlite

3
推荐指数
1
解决办法
2383
查看次数

SQLite.Net UTC DateTime

我正在编写一个Entity Framework 4.1应用程序.在这个应用程序中,我有一个History类定义如下:

public class History
{
    public Guid Id { get; set; }
    public DateTime HistoryDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我查看数据库时,它似乎将日期存储为本地时间.我的公司不存在于一个时区,这会导致问题吗?还有什么我需要做的事情来将日期和时间存储为UTC,或者它是否已经在SQLite中存储为UTC,我只是在当地时间看到结果.以下是我看到的一些示例输出:

select id, historydate from history limit 1;
000846d3-f91d-47bb-9963-baf9530e0229|2004-10-28 16:57:00
Run Code Online (Sandbox Code Playgroud)

提前致谢!

c# sqlite system.data.sqlite entity-framework-4.1

3
推荐指数
1
解决办法
2829
查看次数

C#和SQLite:使用相对路径时"没有这样的表错误"?

我在连接到我的sqlite数据库时遇到问题.该文件位于应用程序的文件夹中.这是连接字符串

string path = "Data Source=MY.db";
Run Code Online (Sandbox Code Playgroud)

如果我使用绝对路径,我可以让它工作,但如果我尝试使用相对路径,它会给我一个"找不到表"错误.有任何想法吗?

c# sqlite system.data.sqlite

3
推荐指数
1
解决办法
1万
查看次数

SQLite CreateDatabase不支持错误

我正在使用Entite Framework 4.2 CF和SQLite,但是当我尝试启动应用程序时,我得到"提供程序不支持CreateDatabase"错误.这是我的模型映射:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            #region NewsMapping

            modelBuilder.Entity<News>().ToTable("news");
            modelBuilder.Entity<News>().HasKey(x => x.Id).Property(x => x.Id).HasColumnName("ID").HasColumnOrder(0);
            modelBuilder.Entity<News>().Property(x => x.Status).HasColumnName("STATUS");
            modelBuilder.Entity<News>().Property(x => x.NewsTitle).HasColumnName("NEWS_TITLE");
            modelBuilder.Entity<News>().Property(x => x.Content).HasColumnName("CONTENT_1");
            modelBuilder.Entity<News>().Property(x => x.IsImportant).HasColumnName("IS_IMPORTANT");
            modelBuilder.Entity<News>().Property(x => x.OrderNumber).HasColumnName("ORDER_NUMBER");
            modelBuilder.Entity<News>().Property(x => x.CreateDate).HasColumnName("CREATE_DATE");
            #endregion

            base.OnModelCreating(modelBuilder);

        }
Run Code Online (Sandbox Code Playgroud)

这段代码有什么问题?

谢谢

sqlite system.data.sqlite ef-code-first entity-framework-4.1 asp.net-mvc-3

3
推荐指数
2
解决办法
7216
查看次数

显示FolderBrowserDialog后,SQLite中的EntryPointNotFoundException

使用64位程序时System.Data.SQLite抛出以下EntryPointNotFoundException:

无法在DLL"SQLite.Interop.dll"中找到名为"sqlite3_changes_interop"的入口点.

奇怪的是,只有Foreign Keys=True在连接字符串中指定并且更重要的是仅在我显示之后才会出现FolderBrowserDialog.我正在浏览一个文件夹来显示要加载的数据库.

以下代码显示问题:

public Form1()
{
    InitializeComponent();

    // Exception below if this is displayed
    using (var diag = new FolderBrowserDialog())
    {
        diag.ShowDialog(this);
    }

    var conn = new SQLiteConnection("data source=':memory:'");
    conn.Open(); // Works fine
    conn.Close();

    // No exception below if displayed here instead
    //using (var diag = new FolderBrowserDialog())
    //{
    //    diag.ShowDialog(this);
    //}

    conn = new SQLiteConnection("data source=':memory:';foreign keys=True");
    conn.Open(); // EntryPointNotFoundException thrown here
    conn.Close();
}
Run Code Online (Sandbox Code Playgroud)

foreign keys=True如果未显示对话框,或者在打开任何其他SQLite连接后显示对话框,则打开连接可正常工作.如果程序作为32位进程运行,代码也可以正常工作.如果我使用单一混合模式x64 SQLite程序集或MSIL + x64互操作程序集,行为也是相同的.我正在使用v1.0.92.0所以不是问题.

所以问题是为什么会显示 …

.net c# sqlite 64-bit system.data.sqlite

3
推荐指数
1
解决办法
2882
查看次数

对EFCore Sqlite的Linq查询不起作用

我正在使用EFCore SQLite,当使用Linq运行简单查询时,我注意到查询Take().Last()没有返回预期的内容,示例代码:

// There are more than 10000 rows in the table
DbSet<DataEntry> set = ctx.Set<DataEntry>();
// this should return the first 20 rows
var current = set.OrderBy(row => row.Id).Take(20);
// first entry is right
long tStart = current.First().Time;
// This should have returned the last entry in the first 20 entries, but instead, it returned the last entry of the entire data set
long tEnd = current.Last().Time;

// so essentially it looks like this:
set.Last().Time == set.Take(20).Last().Time …
Run Code Online (Sandbox Code Playgroud)

c# sqlite linq-to-entities system.data.sqlite entity-framework-core

3
推荐指数
1
解决办法
382
查看次数

ON CONFLICT 甚至不编译错误语法?

我不太确定这是否是我使用的 SQLite 版本的问题。但实际上我没有直接使用本机 SQLite (dll),我使用的是System.Data.SQLite版本1.0.108.0,看起来这是我的应用程序针对的 .NET 4.5 的唯一版本(最新)。

所以我想知道那个版本是否System.Data.SQLite支持ON CONFLICT

这只是基本查询ON CONFLICT

INSERT INTO CUSTOMER(CUSTOMER_ID, CUSTOMER_NAME) VALUES('C1','N1') 
ON CONFLICT(CUSTOMER_ID) 
DO UPDATE SET CUSTOMER_NAME=excluded.CUSTOMER_NAME
Run Code Online (Sandbox Code Playgroud)

但它会抛出一个错误,如下所示:

靠近“ON”:语法错误:

c# sqlite system.data.sqlite

3
推荐指数
1
解决办法
1134
查看次数

sqlite 查询获取所有表名列表以及其中的记录数

请帮助执行以下查询:sqlite 查询以获取所有表名列表以及其中的记录数:

我想获取 Sqlite3 数据库中每个表的行数。我想避免写出手写查询。我可以获得这样的表列表:

SELECT name FROM sqlite_master WHERE type='table' 我想在子查询中使用它,如下所示:

select count (*) from (SELECT name FROM sqlite_master WHERE type='table'); 但只会返回子查询中的总行数,这不是我想要的。

sqlite system.data.sqlite

3
推荐指数
1
解决办法
2344
查看次数