连接的方式整理四种:
第一、使用WebService作为中介访问数据,在PDA中可以直接访问安装在访问器上的Web Service,通过Web Service就可以访问远程数据库了.最简单的一种,使用Web Service可以在速度上会稍显得有点慢.
第二、直接访问.SQL Server2000或SQL Server2005都可以直接访问,如果Access数据库那就只能用上一种方法了。使用SQLCE工具连接数据库.
第三、PDA客户端与服务端连接.最费事的一种,也是最安全的一个.使用Socket,网络程序,客户端安装在PDA上,在PDA上使用Socket连接服务器传递数据,当然还得写一个访问器端,开启监听接受客户端的数据,并向将从数据种查询到的数据访问发送到客户端,使用这种方法比较复杂和麻烦。
第四、读写文件的形式.将从访问器上读取到的数据库信息写成文件的形式保存在PDA本地。如XML文件或INI文件
刚开始的时候记得尝试用了第一种方式,使用WebService连接数据库,感觉很简单,但有时候觉得还是慢,又不是很安全.为此采用了第三种方式,自己写了个服务端放在固定IP上,客户端通过Socket进行数据的传递.
闲下来时,尝试了一下用SQLCE连接如何,试了试,如下简单代码:
string connectionString = @"Data Source=MobileCE.sdf";
SqlCeConnection conObj=new SqlCeConnection(connectionString);
conObj.Open();
DataTable dtPDA = null;
SqlCeDataAdapter daPDA = new SqlCeDataAdapter();
daPDA.SelectCommand = conObj.CreateCommand();
daPDA.SelectCommand.CommandText = "select username,userpwd from login";
dtPDA =new DataTable("login");
daPDA.Fill(dtPDA);
conObj.Close();
this.dataGrid1.DataSource=dtPDA;
提示始终找不到数据库文件(提示:首先记得添加引用System.Data.SqlServerCE,导入命名空间using system.Data.SqlServerCe;),改了绝对路径也是不行.
最后从网上搜到了,连接字符串的问题,改为如下
SqlCeConnection conObj = new SqlCeConnection(("Data Source =" + (System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\MobileCE.sdf;")));
测试连接通过,显示到了数据库表中的数据.
若使用此路径时,还提示找不到数据库文件时,在项目上右键添加现有项,找到创建的sdf数据库文件(创建数据源时的.sdf文件),添加到项目中,此时在解决方案中就会有刚才添加到的sdf文件,在DEBUG文件中,也可以看到此文件,注意不要复制该文件,将文件直接复制到DEBUG目录下也是找不到该文件的.
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/dongdingbaihe/archive/2009/10/20/4703423.aspx