use*_*991 7 c# visual-studio-2010 sql-server-ce
我正在尝试用SQL CE学习C#,以便我的程序可以记住东西.
我创建了一个数据库,可以连接到它:
SqlCeConnection conn =
new SqlCeConnection(@"Data Source=|DataDirectory|\dbJournal.sdf");
conn.Open();
Run Code Online (Sandbox Code Playgroud)
并且它连接正确,我想因为如果我重命名dbJournal.sdf错误它不调试正确.
假设我想做一个简单的SELECT查询.
(SELECT * FROM tblJournal)
Run Code Online (Sandbox Code Playgroud)
怎么做的?
简单的插入怎么样?
(INSERT TO tblJournal (column1, column2, column2) VALUES
(value1, value2, value3))
Run Code Online (Sandbox Code Playgroud)
我习惯了PHP和MySQL(正如你可以看到的那样:o))
@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();
}
Run Code Online (Sandbox Code Playgroud)
然后读取数据:
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);
}
Run Code Online (Sandbox Code Playgroud)
一种更好更快的读取数据的方法是这样的:
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);
}
Run Code Online (Sandbox Code Playgroud)
这会将整个数据一次性获取到DataTable类中。
插入数据:
SqlCeCommand cmdInsert = conn.CreateCommand();
cmdInsert.CommandText = "INSERT TO tblJournal (column1, column2, column2)
VALUES (value1, value2, value3)";
cmdInsert.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)