Tag: sqlite

程序停止工作,问题事件名称:CLR20r3

我从发布文件夹开始我的程序。 在我的Windows 7 64位机器上它正在工作。 在虚拟机Windows 7 32位中它正在工作。 在Windows 7 64位的第三台机器上它无法正常工作。 在我安装.NET Framework 4的每台机器上,我的项目使用.NET Framework 3.5,因为我使用SQLite数据库,而SQLite dll,因为我理解需要将项目作为.NET Framework 3.5。 我使用的是Visual Studio 2010 Express版,SQLite数据库。 这是来自第三台计算机的错误: Description: Stopped working Problem signature: Problem Event Name: CLR20r3 Problem Signature 01: geotest.exe Problem Signature 02: 1.0.0.0 Problem Signature 03: 4e58f462 Problem Signature 04: GeoTest Problem Signature 05: 1.0.0.0 Problem Signature 06: […]

替换DataGridView中的DateTime.MinValue

我正在处理名称记录应用程序,信息存储在SQLite数据库中。 数据库中的所有列都是TEXT类型,除了出生日期列,这是DATETIME。 我转移到SQLite数据库的原始Access数据库允许出生日期为空,所以当我复制它时,我将所有空值设置为DateTime.MinValue。 在我的应用程序中,出生日期列的格式如下: DataGridViewTextBoxColumn dateOfBirth = new DataGridViewTextBoxColumn(); dateOfBirth.HeaderText = “DOB”; dateOfBirth.DataPropertyName = “DateOfBirth”; dateOfBirth.Width = 75; dateOfBirth.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; dateOfBirth.DefaultCellStyle.Format = “MM/dd/yyyy”; 我的问题是没有出生日期的行,数据库有DateTime.MinValue,它在我的DataGridView中显示为01/01/0001。 我正在寻找一种方法来替换我的DataGridView中的空字符串(“”)01/01/0001。 private void resultsGrid_DateFormatting(object sender, System.Windows.Forms.DataGridViewCellFormattingEventArgs e) { if(resultsGrid.Columns[e.ColumnIndex].Name.Equals(“DateOfBirth”)) { if ((DateTime)(resultsGrid.CurrentRow.Cells[“DateOfBirth”].Value) == DateTime.MinValue) { // Set cell value to “” } } } 任何人都知道我如何用空字符串替换DataGridView中的DateTime.MinValue? 谢谢! 编辑:使用DateTime转换单元格值允许我必须使用if语句,但我仍然无法找出用空字符串替换MinValues的编码。

删除EF Core 1.0 RC2中的自动增量(以前的EF 7 RC2)

在Entity Framework Core 1.0 RC2(以前的Entity Framework 7 RC2)中,默认情况下,所有整数主键都是自动增量字段。 我尝试了一切来删除它。 从使用数据注释到流畅的API,没有任何作用。 使用数据注释: [Key, Column(Order = 1, TypeName = “INT”), DatabaseGenerated(DatabaseGeneratedOption.None)] 使用流畅的API: modelBuilder.Entity().HasKey(t => t.ProdId).HasAnnotation(“DatabaseGenerated”, DatabaseGeneratedOption.None); //OR use the following modelBuilder.Entity().HasKey(t => t.ProdId).HasAnnotation(“DatabaseGenerated”, 0); //OR use the following modelBuilder.Entity().HasKey(t => t.ProdId).HasAnnotation(“Sqlite:Autoincrement”, false); 没有任何工作:( 你能帮我么? 更新 正如请求的那样,这是运行add-migration LocalDB_v1后得到的表脚本 migrationBuilder.CreateTable( name: “tblProduct”, columns: table => new { ProdId = […]

entity framework核心/ SQLite:加入“扁平化”结果后的GroupJoin

使用Entity Framework Core 2.1和SQLite数据库,如果我在另一个Join之后使用它,我会从LINQ GroupJoin获得不同的行为。 目前尚不清楚这是一个错误还是我忽略了什么。 我创建了一个最小的VS2017项目来重现这个,可以在这里找到: https://gitlab.com/haddoncd/EntityFrameworkGroupJoinIssue 在这个例子中,我为Blog表中的每一行获取一个对象,每个对象包含多个PostTitles: db.Blogs .GroupJoin( db.Posts, s => s.BlogId, p => p.BlogId, (s, ps) => new { s.BlogId, s.BlogTitle, PostTitles = ps.Select(p => p.PostTitle), } ) .OrderBy(x => x.BlogId)) 但是在这个例子中,结果是“扁平的” – 我为每个Blog-Post对获得一个对象,就像你从传统的SQL外连接一样: db.Subscriptions .Join( db.Blogs, s => s.BlogId, b => b.BlogId, (s, b) => new { s.SubscriptionId, b.BlogId, b.BlogTitle, […]

SQLite 1.0.94没有出现在EDM提供商上

我注意到这也是1.0.93的问题,但它似乎也适用于1.0.94。 进一步来说: Machine运行Windows 8.1 x64,Visual Studio 2013 从官方SQLite网站安装sqlite-netFx451-setup-bundle-x86-2013-1.0.94.0 创建一个C#.NET 4.5.1控制台项目 添加NuGet SQLite x86 / x64 在我的项目中添加“ADO.NET实体数据模型” 从数据库中选择EF Designer SQLite未列在数据源提供程序下。 相反,如果我在服务器资源管理器下添加连接,则会出现SQLite提供程序。 但这还不够,因为我需要使用Entity Framework 6.1.1。 如果有人有解决方案,请分享。 谢谢。

SQlite / Firebird:它们中的任何一个都支持多个并发写访问吗?

问题:我目前将ASP.net应用程序数据存储在XML文件中。 现在问题是我有异步操作,这意味着我遇到了对XML文件进行同时写访问的问题…… 现在,我正在考虑转向嵌入式数据库来解决这个问题。 我正在考虑使用SQlite和嵌入式Firebird。 但是我不确定SQlite或Firebird是否可以处理多个并发写访问。 我当然不希望再次遇到同样的问题。 有人知道吗? SQlite当然更为人所知,但哪一个更好 – SQlite还是Firebird? 我倾向于说Firebird,但我真的不知道。 请不要MS-Access或MS-SQL-express建议,我是一个理智的人。

无法在SQLite的Connection String中提供密码

我使用SQLite和Entity Framework。 我使用以下代码创建数据库: class MyContext : DbContext { // DbSets, OnModelCreating(), etc. protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlite(“Data Source=c:\\test.db”); } } //this is in my test method using (var db = new MyContext()) { db.Database.EnsureCreated(); } 上面的代码有效。 数据库被创建。 但我想通过在连接字符串中提供密码来加密数据库: optionsBuilder.UseSqlite(“Data Source=c:\\test.db;Password=mypassword”); 在这种情况下,在EnsureCreated之后,我会遇到exception System.Data.dll中发生类型为“System.ArgumentException”的未处理exception附加信息:不支持关键字:’password’。 使用密码有什么问题? 如何加密SQLite数据库?

合并两个SQLite数据库文件(C#.NET)

我正在使用C#/ .NET和SQLite的C#包装器。 我正在尝试将两个SQLite数据库合并在一起,同时排除重复项。 我找到了这个,这是从几个不同的论坛问题中引用的。 http://old.nabble.com/Attempting-to-merge-large-databases-td18131366.html 我尝试了下面的查询,我从我提供的链接构建,但它们导致exception,数据库根本没有合并,并且原始数据库不会发生任何变化。 attach ‘c:\test\b.db3’ as toMerge; insert into AuditRecords select * from toMerge.AuditRecords; 这是我的查询代码。 public void importData(String fileLoc) { SQLiteTransaction trans; string SQL = “ATTACH ‘” + fileLoc + “‘ AS TOMERGE”; SQLiteCommand cmd = new SQLiteCommand(SQL); cmd.Connection = connection; connection.Open(); trans = connection.BeginTransaction(); int retval = 0; try { retval […]

如何计算C#中我的SQLite阅读器中返回的行数?

我正在使用Microsoft Visual C#2008 Express和SQLite。 我用这样的东西查询我的数据库: SQLiteCommand cmd = new SQLiteCommand(conn); cmd.CommandText = “select id from myTable where word = ‘” + word + “‘;”; cmd.CommandType = CommandType.Text; SQLiteDataReader reader = cmd.ExecuteReader(); 然后我做这样的事情: if (reader.HasRows == true) { while (reader.Read()) { // I do stuff here } } 我想做的是在我执行“reader.Read()” 之前计算行数,因为返回的数字将影响我想要/需要做的事情。 我知道我可以在while语句中添加一个计数,但我真的需要知道计数。 有什么建议?

如何在不锁定数据库的情况下使用数据读取器执行SQLite查询

我使用System.Data.Sqlite来访问C#中的SQLite数据库。 我有一个查询必须读取表中的行。 在遍历行并且在阅读器打开时,必须执行某些SQL更新。 我遇到了“数据库被锁定”的exception。 SQLite文档说明: 当进程想要从数据库文件中读取时,它遵循以下步骤: 打开数据库文件并获取SHARED锁。 该文档进一步说明了“共享”锁定: 可以读取数据库但不写入。 任意数量的进程可以同时保存SHARED锁,因此可以有许多同时读取器。 但是,当一个或多个SHARED锁处于活动状态时,不允许其他线程或进程写入数据库文件。 FAQ说明: 多个进程可以同时打开同一个数据库。 多个进程可以同时执行SELECT。 但是,只有一个进程可以随时对数据库进行更改。 SQLite权威指南一书指出: …通过使用read_uncommited编译指示,连接可以选择具有读取未提交的隔离级别。 如果将其设置为true ,则连接将不会在其读取的表上放置读锁定。 因此,另一个writer实际上可以更改表,因为read-uncommitted模式下的连接既不会阻塞也不会被任何其他连接阻塞。 我尝试将pragma设置为在SQL查询命令语句中读取未提交,如下所示: PRAGMA read_uncommitted = 1; SELECT Column1, Column2 FROM MyTable 使用不同连接的同一线程上的SQL更新仍然失败,并出现“数据库已锁定”exception。 然后,我尝试将隔离级别设置为在连接实例上读取未提交。 同样的例外仍然没有变化。 如何在不锁定数据库的情况下使用开放数据读取器来遍历数据库中的行,以便我可以执行更新? 更新: 以下两个答案都有效。 然而,我已经从使用默认回滚日志转移到现在使用预写日志,这提供了改进的数据库读写并发性。