База данных * .sdf не работает с паролем - PullRequest
0 голосов
/ 14 ноября 2011

Я создал *.sdf файл с паролем, защищенным с помощью Visual Studio, работал нормально.Я вставляю некоторые данные и пытаюсь читать с помощью редактора Visual Studio SQL, но когда я перешел на код C #, это не сработало.

Я попробовал следующее:

using System;
using System.Data.SqlServerCe;


    class Program
    {
        static void Main(string[] args)
        {
            var conStr = @"data source=C:\path\db.sdf; password=<...>";
            SqlCeConnection con = new SqlCeConnection(conStr);
            con.Open();

            SqlCeCommand cmd = con.CreateCommand();
            cmd.CommandText = "select * from Cookies";
            cmd.CommandType = System.Data.CommandType.TableDirect;
            cmd.Connection = con;

            SqlCeDataReader result = cmd.ExecuteReader();
            //...
            con.Close();
        }
    }

Я получил следующую ошибку: The specified table does not exist. [ select * from Cookies ]

Структура таблицы

enter image description here

Это возвращает ложь.Кто-то может указать мою ошибку?

Заранее спасибо.

1 Ответ

0 голосов
/ 14 ноября 2011

Ваша проблема в том, что вы указываете System.Data.CommandType.TableDirect.

Когда вы измените свой код на использование следующего, вы избежите ошибки, которую видите.

cmd.CommandType = System.Data.CommandType.Text;

Вы даже можете исключить установку свойства CommandType, так как Text является значением по умолчанию.

TableDirect - это устаревший тип команды OLEDB. Не используйте его, если ваша команда не является только именем таблицы или представления. Внутри объект команды создаст оператор SELECT * FROM, выбрав все поля и все записи из указанной таблицы или представления.

...