none
Не видим файл только что созданной базыданных RRS feed

  • Общие обсуждения

  • Работаю с SQLite, в визуал студио 2012 создаю файл новой базы данных SQLite, создаю таблицу и колонки в ней.

    при попытке взять данные с БД мне пишет ошибку, что не находит такую таблицу.

    public static string filename = Path.Combine(Application.StartupPath, "test.db"); private string ConnectionString = string.Format("data source={0};New=True;UseUTF16Encoding=True", filename); private void Form1_Load(object sender, EventArgs e) { dataGridView1.DataSource=FetchAll("ExcelCar"); } public DataTable FetchAll(string databasename) { DataTable dt=new DataTable(); string sql = string.Format("Select * from {0}", databasename); ConnectionState previousConnectionState = ConnectionState.Closed; using (SQLiteConnection connect =new SQLiteConnection(ConnectionString)) { previousConnectionState = connect.State; if (connect.State==ConnectionState.Closed) { connect.Open(); } SQLiteCommand command=new SQLiteCommand(sql,connect); SQLiteDataAdapter adapter=new SQLiteDataAdapter(command); adapter.Fill(dt); } return dt; }

    при этом, я взял чужой фаил базы данных SQLite с нета, создал там точно такую же таблицу. и при обращении к ней программа вполне спокойно запускается.

    вопрос: в каком месте у меня руки сломаны?

    проблема номер два из другого источника:

    на отказ таблица не создается этим кодом:

    private void button1_Click(object sender, EventArgs e)
            {
                mydb = new sqliteclass();
                sSql = @"CREATE TABLE if not exists [birthday]([id] INTEGER PRIMARY KEY AUTOINCREMENT,[FIO] TEXT NOT NULL,[bdate] datetime NOT NULL,[gretinyear] INTEGER DEFAULT 0);";
                //Пыьаемся создать таблицу
                mydb.iExecuteNonQuery(sPath, sSql, 0);
                sSql = @"insert into birthday (FIO,bdate,gretinyear) values('Александр Сергеевич Пушкин','1799-06-06',0);";
                //Проверка работы
                if (mydb.iExecuteNonQuery(sPath, sSql, 1) == 0)
                {
                    Text = "Ошибка проверки таблицы на запись, таблица или не создана или не прошла запись тестовой строки!";
                    mydb = null;
                    return;
                }
                sSql = "select * from  birthday";
                DataRow[] datarows = mydb.drExecute(sPath, sSql);
                if (datarows == null)
                {
                    Text = "Ошибка проверки таблицы на чтение!";
                    mydb = null;
                    return;
                }
                Text = "";
                foreach (DataRow dr in datarows)
                {
                    Text += dr["id"].ToString().Trim() + dr["FIO"].ToString().Trim() + dr["bdate"].ToString().Trim() + " ";
                }
    
                sSql = "delete from  birthday";
                if (mydb.iExecuteNonQuery(sPath, sSql, 1) == 0)
                {
                    Text = "Ошибка проверки таблицы на удаление записи!";
                    mydb = null;
                    return;
                }
    
                Text = "Таблица создана!";
                mydb = null;
                return;
    
            }


    • Изменено Magals 4 февраля 2013 г. 6:33
    • Изменен тип Abolmasov Dmitry 20 февраля 2013 г. 9:42
    4 февраля 2013 г. 6:32

Все ответы

  • Привет

    В первой строке подключения у вас указан параметр New=true, что говорит о создании новой базы данных и скорей всего файл созданный вами до этого через дизайнер затирается тем, что создает драйвер SQLite при подключении (т.е. он пытается создать новую БД). Соответственно поэтому вашей таблицы более не существует и выгрузить данные с нее вы не можете.

    Используйте подключение

    Data Source=c:\mydb.db;Version=3;

    Подробнее о строках подключения здесь

    Код создания таблицы вроде верен, попробуйт не кодом, а в дизайнере проверить ее существование


    Для связи [mail]

    5 февраля 2013 г. 7:08
  • Привет

    В первой строке подключения у вас указан параметр New=true, что говорит о создании новой базы данных и скорей всего файл созданный вами до этого через дизайнер затирается тем, что создает драйвер SQLite при подключении (т.е. он пытается создать новую БД). Соответственно поэтому вашей таблицы более не существует и выгрузить данные с нее вы не можете.

    Используйте подключение

    Data Source=c:\mydb.db;Version=3;

    Подробнее о строках подключения здесь

    Код создания таблицы вроде верен, попробуйт не кодом, а в дизайнере проверить ее существование


    Для связи [mail]

    Дизайном не раз проверял, как не было так и нет
    5 февраля 2013 г. 8:09
  • Уважаемый пользователь!

    В вашей теме отсутствует активность в течение последних 5 дней. При отсутствии каких-либо действий в течение 2 последующих дней, тема будет переведена в разряд обсуждений. Вы можете возобновить дискуссию, просто оставив сообщение в данной теме


    Для связи [mail]

    12 февраля 2013 г. 9:19