第一次做c#开发,也是第一次做嵌入式开发,为了使用数据库,找了好多的资料。可能是现在大多是安卓开发了吧,资料不多,而且大部分资料都狠重点,看不出数据库怎么配的。弄了1天,总算弄好了。其实还是很简单的。
我使用的是vs2008开发,语言是C#,网上有很多推荐的wince的数据库,但是我最终选定了sqlce,主要原因是找到一份sqlce较完整的安装说明,次要原因在于我本地正好有sqlserver。
1,wince安装数据库驱动
拷贝\Microsoft SQL Server Compact Edition\v3.5\Devices\wce500\armv4i目录下的sqlce.wce5.armv4i,sqlce.repl.wce5.armv4i,sqlce.dev.ENU.wce5.armv4i到wince根目录,然后在wince顺次双击安装,一路回车即可。
两点说明:1,一定要顺次,因为第一个是驱动,后面两个好像都是工具,顺序错了重新安装一次即可。
2,据说有些平板在重启后需要重新安装,所以要烧进系统,我没遇到,我也不会,所以需要的朋友再去找其他资料。
2,VS2008建立数据库
在项目中增加数据库文件。这里还需要说一句,如果加入数据库时报错了,那是dll旧了,我找了很久,最后还是在咱csdn找到个能用的。
http://download.csdn.net/detail/friendan/4807206,要用9.0.30729.1版
通过database prperties可以设定密码。
通过如上视图还可以创建表,检索表等操作,不再啰嗦。
3,开发程序
直接贴代码了,从代码里找需要的内容吧,别忘了加入包名,否则是找不到类的,在reference里加入也是可以的。还有就是wince里数据库的路径是绝对路径。
using System;
using System.Data.SqlServerCe;
using System.Collections.Generic;
using System.Text;
using System.Data;
namespace aaa
{
public class Connection
{
//local
//private const string dataSource="C:/AppDatabase1.sdf";
//screen
private const string dataSource = "/ResidentFlash/AppDatabase1.sdf";
private const string password = "password";
protected SqlCeConnection _Connection = null;
/**
* 打开连接
*
*/
protected Boolean createConnection()
{
//连接sql server Mobile数据库的连接字符串
string _LocalConnectionString = "Data Source=" + dataSource
+ ";Persist Security Info=True;password=" + password + ";";
_Connection = new SqlCeConnection(_LocalConnectionString);
try
{
//打开连接
_Connection.Open();
return true;
}
catch (Exception e)
{
Console.Out.WriteLine(e.StackTrace);
return false;
}
}
/**
*关闭连接
*/
protected Boolean closeConnection()
{
if (_Connection.State == ConnectionState.Open)
_Connection.Close();
return true;
}
/**
* 数据执行
*/
public int executeNonQuery(string sqlstr)
{
//如果创建连接成功
if (createConnection())
{
try
{
//执行
SqlCeCommand cmd = _Connection.CreateCommand();
cmd.CommandText = sqlstr;
cmd.ExecuteNonQuery();
return 1;
}
catch (Exception e)
{
//异常
Console.Out.WriteLine(e.StackTrace);
return 0;
}
finally
{
//关闭连接
closeConnection();
}
}
return 0;
}
/**
* 检索数据条数
*/
public int selectCount(string sqlstr)
{
//如果创建连接成功
if (createConnection())
{
try
{
//执行
SqlCeCommand cmd = _Connection.CreateCommand();
cmd.CommandText = sqlstr;
SqlCeDataReader rdr = cmd.ExecuteReader();
rdr.Read();
return rdr.GetInt32(0);
}
catch (Exception e)
{
//异常
Console.Out.WriteLine(e.StackTrace);
return 0;
}
finally
{
//关闭连接
closeConnection();
}
}
return 0;
}
}
}