在SQLite中打开连接

时间:2011-09-21 11:51:56

标签: c# sqlite windows-ce

我试图在Windows ce 5.1.17中使用SQLite。 我在项目的debug文件夹中使用SQLite Administrator创建一个SQLite数据库。 然后我将System.Data.SQLite.dll和SQLite.Interop.065.dll添加到我的项目中。 我正在尝试以下代码连接到数据库。

SQLiteConnection myConnection = null;
myConnection = new SQLiteConnection(@"Data Source=" + System.IO.Path.Combine(System.IO.Path. GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase), Stock.s3db)+ "; Version=3; Cache Size =100");
                myConnection.Open();

                SQLiteCommand cmd = new SQLiteCommand();
                cmd.CommandText = "select * from shops;";
                cmd.CommandType = CommandType.Text;
                cmd.Connection = myConnection;
                cmd.ExecuteReader();// I get exception no such table: shops

当我检查myConnection数据库属性时,它显示'Database =“main”'。我不知道为什么数据库名称是'main',但在myConnection中我将数据源设置为Stock.s3db。

4 个答案:

答案 0 :(得分:8)

使用连接字符串构建器确保获得格式正确的字符串

SQLiteConnectionStringBuilder builder = new SQLiteConnectionStringBuilder();
builder.FailIfMissing = true;
builder.DataSource = "Insert the fully qualified path to your sqlite db";
SQLiteConnection connection = new SQLiteConnection(builder.ConnectionString);
connection.Open();

答案 1 :(得分:1)

如果查看Debug / Release文件夹,您可能会找到为您创建的空数据库文件,因为您指定的文件不存在。 'main'是带有sqlite的标准db名称。

将数据库复制到所述文件夹中进行测试,或指定连接字符串中的完整路径。

尝试此查询以确定您使用的文件所在的位置。

PRAGMA database_list

答案 2 :(得分:1)

将数据库放在构建输出的debug文件夹中 not 意味着该文件将最终在目标设备上。您需要将数据库复制到目标设备(有多种机制,如USB磁盘,远程文件查看器,将其作为内容项添加到项目中等)。

我也倾向于使用数据库的完全限定路径,因为CE没有任何工作目录的概念。

答案 3 :(得分:0)

您的数据库文件很可能不在正确的文件夹中。试着给这一行:

myConnection = new SQLiteConnection(@"Data Source=Stock.s3db; Version=3;");

数据库的完整路径。