1) Wymaga .NET Framework 4 zaktualizowany do co najmniej 4.0.2.If you have 4.0.2, then you should have
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.0.2
Jeśli masz zainstalowaną najnowszą VS 2012 są szanse, że masz już 4.0.2. Najpierw sprawdź.
2) Następnie musisz mieć instancję LocalDb
. Domyślnie masz instancję, której nazwa to pojedynczy znak v
, po którym następuje numer wersji wersji LocalDB w formacie xx.x. Na przykład v11.0
reprezentuje program SQL Server 2012. Automatic instances are public by default. You can also have named instances which are private. Wywołane instancje zapewniają izolację od innych instancji i mogą poprawić wydajność, zmniejszając rywalizację o zasoby z innymi użytkownikami baz danych. You can check the status of instances using the SqlLocalDb.exe
utility (run it from command line).
3) Następnie ciąg połączenia powinna wyglądać następująco:
"Server=(localdb)\\v11.0;Integrated Security=true;"
lub
"Data Source=(localdb)\\test;Integrated Security=true;"
z kodu. They both are the same. Należy zwrócić uwagę na dwa wymagane \\
, ponieważ \v
i \t
oznaczają znaki specjalne. Zauważ, że to, co pojawia się po (localdb)\\
, jest nazwą twojej instancji LocalDb. v11.0
jest domyślną instancją publiczną, test
to coś, co stworzyłem ręcznie, co jest prywatne.
Jeśli masz bazę danych (.mdf pliku) już:
"Server=(localdb)\\Test;Integrated Security=true;AttachDbFileName= myDbFile;"
Jeśli nie masz bazy danych SQL Server:
"Server=(localdb)\\v11.0;Integrated Security=true;"
Możesz także utworzyć własną programistyczną bazę danych sojusznik:
a) zapisać go w domyślnej lokalizacji z ustawieniem domyślnym:
var query = "CREATE DATABASE myDbName;";
b) aby zapisać go w określonym miejscu z własnych ustawień niestandardowych:
// your db name
string dbName = "myDbName";
// path to your db files:
// ensure that the directory exists and you have read write permission.
string[] files = { Path.Combine(Application.StartupPath, dbName + ".mdf"),
Path.Combine(Application.StartupPath, dbName + ".ldf") };
// db creation query:
// note that the data file and log file have different logical names
var query = "CREATE DATABASE " + dbName +
" ON PRIMARY" +
" (NAME = " + dbName + "_data," +
" FILENAME = '" + files[0] + "'," +
" SIZE = 3MB," +
" MAXSIZE = 10MB," +
" FILEGROWTH = 10%)" +
" LOG ON" +
" (NAME = " + dbName + "_log," +
" FILENAME = '" + files[1] + "'," +
" SIZE = 1MB," +
" MAXSIZE = 5MB," +
" FILEGROWTH = 10%)" +
";";
I wykonać!
Tabela próbka może być załadowany do bazy danych z czymś takim:
@"CREATE TABLE supportContacts
(
id int identity primary key,
type varchar(20),
details varchar(30)
);
INSERT INTO supportContacts
(type, details)
VALUES
('Email', '[email protected]'),
('Twitter', '@sqlfiddle');";
Zauważ, że robi SqlLocalDb.exe
narzędzie daje dostęp do baz danych, należy oddzielnie trzeba sqlcmd
narzędzie, które jest smutne ..
EDIT : przesunięta pozycja średnika w przeciwnym razie wystąpiłby błąd, gdyby kod został skopiowany/wklejony
Nie mówię, to jest przyczyną problemu, ponieważ może być ich więcej, ale odwrotne ukośniki są specjalne w łańcuchach C#, chyba że poprzedzisz je przez '@': '@" (LocalDB) \ v11.0 "'. – hvd
Prawda Nie dodałem symbolu @. Ponowiłem próbę i zwróciłem ten sam wynik. –
Nie ma bazy danych w łańcuchu połączenia. –