我正在尝试使用SQL CE了解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))
答案 0 :(得分:3)
@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);
}
这样可以将整个数据一次性放入DataTable类。
要插入数据:
SqlCeCommand cmdInsert = conn.CreateCommand();
cmdInsert.CommandText = "INSERT TO tblJournal (column1, column2, column2)
VALUES (value1, value2, value3)";
cmdInsert.ExecuteNonQuery();
答案 1 :(得分:1)
如果您刚开始学习我建议您使用LINQ进行查询。
以下是MSDN文章,其中显示了LINQ的功能。
http://msdn.microsoft.com/en-us/library/bb425822.aspx
使用LINQ,每个查询都很简单。例如,您可以像这样编写选择查询
from journal in TblJournal select journal
或只是
context.TblJournal
答案 2 :(得分:1)
同样为了提高性能,最好在使用SQL CE时保持连接打开(而不是其他标准sql数据库)