以字符串c#打开SQLite3文件

时间:2014-02-12 20:42:22

标签: c# sqlite

我想在C#

中打开一个SQLite格式3文件作为字符串
string fileName = @"C:\Users\Test\Downloads\hello.sql";

            using (BinaryReader b = new BinaryReader(File.Open(fileName, FileMode.Open),
                                                   Encoding.GetEncoding(1252)))
            {
                int pos = 0;
                int length = (int)b.BaseStream.Length;
                while (pos < length)
                {
                    int v = b.ReadInt32();
                    textBox1.Text += (v);

                    pos += sizeof(int);
                }
            }

这是我到目前为止所获得的代码,但是当我尝试打开它时,它会冻结并且不会让你做任何事情,好像它在一个不断的循环中试图打开它。

如果你仍然对我想要做的事情感到困惑。如果您右键单击该文件并使用记事本或记事本++打开它,您可以看到文件内容(字符串),这就是我希望在程序的字符串或文本框中显示的内容。

P.S我不想以SQLite格式打开它,我想将其作为文本打开

1 个答案:

答案 0 :(得分:0)

我不确定你为什么要这样做,但这种方法很有效:

string fileName = @"C:\Users\Test\Downloads\hello.sql";
textBox1.Text = File.ReadAllText(filename, Encoding.GetEncoding(1252));

或者如果要将文件内容视为字节值,可以使用:

byte[] buffer = File.ReadAllBytes(filename);
textBox1.Text = BitConverter.ToString(buffer);

编辑:

此代码适用于winforms文本框。我不是只检查0x00,而是使用.NET的char.IsControl函数检查所有控制字符并替换它们。

string fileName = @"C:\Users\Test\Downloads\hello.sql";

byte[] buffer = File.ReadAllBytes(fileName);
Encoding enc = Encoding.GetEncoding(1252);
char[] chars = enc.GetChars(buffer);

for (int n = 0; n < chars.Length; n++)
{
    if (char.IsControl(chars[n])) chars[n] = '.';
}

textBox1.Text = new string(chars);