C# 从Visual Studio C和SQL Compact(连接、选择、插入)开始基本操作?

C# 从Visual Studio C和SQL Compact(连接、选择、插入)开始基本操作?,c#,visual-studio-2010,sql-server-ce,C#,Visual Studio 2010,Sql Server Ce,我正在尝试用SQLCE学习C,这样我的程序就可以记住东西了 我已经创建了一个数据库,可以连接到它: SqlCeConnection conn = new SqlCeConnection(@"Data Source=|DataDirectory|\dbJournal.sdf"); conn.Open(); 它连接正确,我想如果我将dbJournal.sdf重命名为错误的名称,它就不会调试正确 假设我想做一个简单的SELECT查询 (SELECT * FROM tblJourn

我正在尝试用SQLCE学习C,这样我的程序就可以记住东西了

我已经创建了一个数据库,可以连接到它:

SqlCeConnection conn = 
         new SqlCeConnection(@"Data Source=|DataDirectory|\dbJournal.sdf");
conn.Open();
它连接正确,我想如果我将dbJournal.sdf重命名为错误的名称,它就不会调试正确

假设我想做一个简单的SELECT查询

(SELECT * FROM tblJournal)
这是怎么做到的

简单的插页怎么样

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

我已经习惯了PHP和MySQL,正如您所看到的:o

如果您刚刚开始学习,我建议您使用LINQ进行查询

下面是一篇MSDN文章,展示了LINQ的特性

使用LINQ进行每个查询都很简单。例如,您可以这样编写select查询

from journal in TblJournal select journal 
或者只是

context.TblJournal

@Chuck提到EntityFramework,它简化了事情并为您完成了编写sql的所有工作

但是这里有一个基本的ADO.NET方法,我将在下面描述

这些类遵循标准模式,因此要插入/读取sql server或其他数据库中的数据,就需要有精确的副本类,如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);
}
这可以一次性将整个数据放入一个类中

要插入数据:

SqlCeCommand cmdInsert = conn.CreateCommand();
cmdInsert.CommandText = "INSERT TO tblJournal (column1, column2, column2) 
                           VALUES (value1, value2, value3)";
cmdInsert.ExecuteNonQuery();

此外,为了提高性能,与其他标准SQL数据库相比,使用SQL CE时最好始终保持连接打开

@gideon,谢谢您的编辑。如何生成代码块?你只需选择文本并按Ctrl+k键,文本将缩进4个空格,格式为代码块。这是一组很好的示例,但不应该有连接。关闭;某处?@gideon您的连接处于使用块中。。。这是否意味着连接将被自动关闭/释放?@prokuros是的,其继承链中的适配器继承自System.ComponentModel.Component,它是IDisposable的,因此它某种程度上意味着它将进行清理。适配器也拥有连接,因为在我的示例中,适配器获取字符串并创建连接。因此,我的期望是,它将关闭连接。