Начать с Visual Studio C # и SQL Compact (подключиться, выбрать, вставить)? - PullRequest
7 голосов
/ 22 марта 2012

Я пытаюсь узнать о C # с помощью SQL CE, чтобы моя программа могла что-то запоминать.

Я создал базу данных и могу к ней подключиться:

SqlCeConnection conn = 
         new SqlCeConnection(@"Data Source=|DataDirectory|\dbJournal.sdf");
conn.Open();

И этоподключается правильно, я думаю, потому что если я переименую dbJournal.sdf во что-то неправильное, это не отладит правильно.

Допустим, я хочу сделать простой запрос SELECT.это сделано?

А как насчет простой вставки?

(INSERT TO tblJournal (column1, column2, column2) VALUES 
                                        (value1, value2, value3))

Я привык к PHP и MySQL (как вы правильно видите: o))

Ответы [ 3 ]

3 голосов
/ 22 марта 2012

@ Чак упоминает EntityFramework, который упрощает работу и выполняет всю работу по написанию sql для вас.

Но здесь есть базовый подход ADO.NET, который я опишу ниже.

Классы следуют стандартному шаблону, поэтому для вставки / чтения с сервера SQL или других баз данных существуют точные классы реплики, такие как SqlConnection или OleDbConnection и OleDbCommand и т. Д.

Этобольшинство подходов ado.net:

using( SqlCeConnection conn =
          new SqlCeConnection(@"Data Source=|DataDirectory|\dbJournal.sdf") )
using( SqlCeCommand cmd = conn.CreateCommand() )
{
  conn.Open();
  //commands represent a query or a stored procedure       
  cmd.CommandText = "SELECT * FROM tblJournal";
  using( SqlCeDataReader rd = cmd.ExecuteReader() )
  {
     //...read
  }
  conn.Close();
}

Затем читать данные:

while (rd.Read())
{//loop through the records one by one
     //0 gets the first columns data for this record
     //as an INT
     rd.GetInt32(0);
     //gets the second column as a string
     rd.GetString(1);
}

Хороший и быстрый способ чтения данных выглядит так:

using( SqlCeDataAdapter adap = 
          new SqlCeDataAdapter("SELECT * FROM tblJournal", "your connection") )
{
  //the adapter will open and close the connection for you.
  DataTable dat = new DataTable();
  adap.Fill(dat);
}

Это получает все данные за один снимок в DataTable класс.

Для вставки данных:

SqlCeCommand cmdInsert = conn.CreateCommand();
cmdInsert.CommandText = "INSERT TO tblJournal (column1, column2, column2) 
                           VALUES (value1, value2, value3)";
cmdInsert.ExecuteNonQuery();
1 голос
/ 09 ноября 2012

Кроме того, чтобы улучшить производительность, вам лучше постоянно поддерживать связь открытой при работе с SQL CE (в отличие от других стандартных баз данных sql)

1 голос
/ 22 марта 2012

Если вы только начнете узнавать, что я предложу вам использовать LINQ для выполнения этих запросов.

Вот статья MSDN, показывающая особенности LINQ.

http://msdn.microsoft.com/en-us/library/bb425822.aspx

Используя LINQ, каждый запрос будет простым. Например, вы можете написать свой запрос на выборку вот так

from journal in TblJournal select journal 

или просто

context.TblJournal
...