C# i SQLite

0

Witam

Pisze program w Visual C# 2008 Express Edition i potrzebuje także bazy danych myślę o SQLite, pytanie moje jest następujące: Czy jest możliwe połączenie się z SQLite z poziomu Visual C# 2008 Express? Jeżeli tak to czy ktoś zna jakiś opis jak to zrobić ? Próbuję od pewnego czasu na różne sposoby, ale cały czas wyskakuje mi następujący błąd:

"Could not load file or assembly 'Microsoft.VisualStudio.Data, Version=8.0.0.0, Culture=natural, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference."

Będę wdzięczny za pomoc :)

0

Pokaż jak się łączysz.. - nie sądze abyś potrzebował do tego przestrzeni Microsoft.VisualStudio .. chyba, że używasz Designera

0

Nie dawno bawiłem się trochę tą biblioteką, na dole zamieszczam kod jak ja się łączyłem, ale przede wszystkim zamieść kod jak ty się łączysz.

private void polacz()
{
	       SQLiteConnection con = new SQLiteConnection();
	       SQLiteCommand cmd = new SQLiteCommand();
			con.ConnectionString = "data source=c:\\BazaDanych2.s3db;";
			con.Open();
		     
		        cmd.Connection = con;
		        cmd.CommandText = "SELECT * FROM person";
		      
		      SQLiteDataReader reader = cmd.ExecuteReader();
		    
                    reader.Close();
		    con.Close();
}

Oczywiście nie zapomnij by dodać bibliotekę SQLite (using SQLite;).
Pozdrawiam

0

...a bibliotekę tę zdobyć można tutaj: http://sqlite.phxsoftware.com/

0

Łącze się w ten sam sposób co podałeś teraz wyrzuca mi następujący błąd:

"File opened that is not a database file
file is encrypted or is not a database"

Czyżby chodziło o bibliotekę ? Dodany mam using System.Data.SQLite a w References System.Data.SQLite.

Pozdrawiam

1

Po prostu przeczytaj ten wyjątek. I przetłumacz.

Otwarto plik który nie jest plikiem bazy danych.
Plik jest zaszyfrowany albo nie jest bazą danych.

Learn English...

0

Treść komunikatu rozumiem i w tym problem, że podaje lokalizacje gdzie ta baza faktycznie się znajduje i mimo to cały czas ten sam błąd :(

1

Aha, to sorry za kalumnie :)
A jesteś pewien że nie jest zaszyfrowana? A jeśli tak, to użyj google :P

http://www.google.pl/search?q=%22File+opened+that+is+not+a+database+file+file+is+encrypted+or+is+not+a+database%22&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:pl:official&client=firefox-a

Tutaj zaś jest konkretnie, może o to chodzi?:
http://mediakey.dk/~cc/troubleshooting-sqlite-query-error-unable-to-open-database/

Sorry jeśli to nie pomoże, ale mógłbyś podać trochę więcej informacji...

0

Naprawdę już nie wiem gdzie jest błąd i co źle robię :( cały czas nie mogę się połączyć z tą bazą stworzyłem sobie testowy projekt aby na nim testować i nadal to samo:

File opened that is not a database file
file is encrypted or is not a database

A oto kod jaki mam:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SQLite;

namespace probasqlite
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {     
            
        }

        

        private void button1_Click(object sender, EventArgs e)
        {
            SQLiteConnection conn = new SQLiteConnection("Data Source=proba.db;");
            SQLiteCommand cmd = new SQLiteCommand();
            conn.Open();
            cmd.Connection = conn;
            cmd.CommandText = "SELECT * FROM tabela";
            SQLiteDataReader reader = cmd.ExecuteReader();
            reader.Close();
            conn.Close();
        }
    }
} 

W References mam System.Data.SQLite. Zauważyłem, że program tworzy bazę jeżeli jej nie ma i z taką pustą bazą jak odpalam program wygląda wszystko ok zero błędu, natomiast gdy dodam tabele do tej bazy to już nie mogę się połączyć czyli widzę komunikat "File opened that is not a database file
file is encrypted or is not a database". Może ktoś opisze mi co mam robić krok po kroku, może źle biblioteki dodaje ?

0

Ok, trochę kodu z mojego projektu (wyrwane z kontekstu, ale chyba widać co trzeba):

      // check if DataFile exists
            if (System.IO.File.Exists(dataFile) == false) {
                // Magically creates file
                connection = new SQLiteConnection("Data Source=" + dataFile);
                connection.Open();

                // fill with tables
                initDataBase();
            }

            else {
                connection = new SQLiteConnection("Data Source=" + dataFile);
                connection.Open();
            }
private void initDataBase() {
            using (SQLiteTransaction transaction = connection.BeginTransaction()) {
                using (SQLiteCommand command = connection.CreateCommand()) {                        
                    // Create tables

                    // przyklad:
                    command.CommandText = @"CREATE TABLE `Songs` (`Song_ID` INTEGER NOT NULL, `Tag_ID` INTEGER NOT NULL, PRIMARY KEY (`Song_ID`, `Tag_ID`))";
                    command.ExecuteNonQuery();
                }
                
                transaction.Commit();
            }            
        }

Zapytanie:

            using (SQLiteTransaction transaction = connection.BeginTransaction()) {
                using (SQLiteCommand command = connection.CreateCommand()) {
                    command.CommandText = @"SELECT s.[id] FROM [Songs] s, [Artists] a
                                            WHERE s.[Artist_ID] = a.[ID]
                                            AND s.[Path] = @pPath";

                    SQLiteParameter pPath = new SQLiteParameter("@pPath");
                    command.Parameters.Add(pPath);
                    pPath.Value = path;

                    object o = command.ExecuteScalar();

                    song_id = (o != null ? (Int64)o : DBClient.None);                    
                }

                transaction.Commit();
            }

            return song_id;
        
0

Wielkie dzięki za pomoc kolego udało mi się to ruszyć :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1