【发布时间】:2017-02-20 22:41:48
【问题描述】:
如何打开 SQLite 数据库扩展名为 .db 的文件?
我已经下载了 SQLite 的数据库浏览器。 当我尝试打开数据库文件时,弹出一个名为“标题为 SQLCipher Encryption”的新窗口,询问用于加密的密码和文件大小(与究竟是什么“文件大小”混淆......?)。
我有一个应用程序源代码,我设法找到密码并尝试使用默认页面大小 1024。
试了好几次都打不开。
public void ReadRecord(string sql)
{
try
{
this.sqlite_cmd.CommandText = this.cSql;
this.sqlite_datareader = this.sqlite_cmd.ExecuteReader();
if (this.sqlite_datareader.Read())
{
this.sAddEdit = "E";
this.txt1.Tag = this.sqlite_datareader["id"];
this.txt1.Text = this.sqlite_datareader["f0"].ToString();
this.txt2.Text = this.sqlite_datareader["f1"].ToString();
this.txt3.Text = this.sqlite_datareader["f2"].ToString();
this.txt4.Text = this.sqlite_datareader["f3"].ToString();
this.txt5.Text = this.sqlite_datareader["f4"].ToString();
this.dtpListDate.Text = this.sqlite_datareader["f5"].ToString();
this.txt7.Text = this.sqlite_datareader["f6"].ToString();
this.txt8.Text = this.sqlite_datareader["f7"].ToString();
this.txt9.Text = this.sqlite_datareader["f8"].ToString();
this.txt10.Text = this.sqlite_datareader["f9"].ToString();
this.txt11.Text = this.sqlite_datareader["f10"].ToString();
this.txt12.Text = this.sqlite_datareader["f11"].ToString();
this.txt13.Text = this.sqlite_datareader["f12"].ToString();
this.txt14.Text = this.sqlite_datareader["f13"].ToString();
this.txt15.Text = this.sqlite_datareader["f14"].ToString();
this.txt16.Text = this.sqlite_datareader["f15"].ToString();
this.txt17.Text = this.sqlite_datareader["f16"].ToString();
this.txt18.Text = this.sqlite_datareader["f17"].ToString();
this.txt19.Text = this.sqlite_datareader["f18"].ToString();
this.txt20.Text = this.sqlite_datareader["f19"].ToString();
this.txt21.Text = this.sqlite_datareader["f20"].ToString();
this.txt22.Text = this.sqlite_datareader["f21"].ToString();
this.txt23.Text = this.sqlite_datareader["f22"].ToString();
this.txt24.Text = this.sqlite_datareader["f23"].ToString();
this.txt25.Text = this.sqlite_datareader["f24"].ToString();
this.txt26.Text = this.sqlite_datareader["f25"].ToString();
this.txt27.Text = this.sqlite_datareader["f26"].ToString();
this.txt28.Text = this.sqlite_datareader["f27"].ToString();
this.txt29.Text = this.sqlite_datareader["f28"].ToString();
this.txt30.Text = this.sqlite_datareader["f29"].ToString();
}
this.sqlite_datareader.Close();
}
catch (Exception exception)
{
MessageBox.Show("A Error" + exception.ToString() + " Occcured Please Try Again or contact supplier", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
}
}
在命名空间中,
using Microsoft.VisualBasic.PowerPacks;
using System;
using System.ComponentModel;
using System.Data;
using System.Data.SQLite;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
【问题讨论】:
-
嘿,@ArtjomB。仅供参考,我已共享代码
-
欢迎使用 stackoverflow。你想用 FillHeader() 做什么; ?而且似乎缺少 SqlCommand 的语法..
-
谢谢@KayLee 我只想打开文件并检查我的工作:我已经替换了 FillHeader();带有代码的东西包含 SqlCommand
-
我的代码只是确认连接是否打开。但是,为了读取数据库中的内容,您需要了解数据库的结构,例如表名、列名、数据类型。否则,您必须使用 DB Browser 或 Server Management Studio。它是免费且可下载的。
-
像这样的整个
try/catch (Exception)是一个糟糕的反模式。阅读Eric Lippert's Vexing Exceptions。
标签: c# sqlite encryption connection