c#无法更新sqlce3.5的问题
情况说明:个人编写的一个小程序,主要用来登记单位人员各类杂费报销,vs2008C#,因为功能比较单一,使用sqlce3.5嵌入式开发。设计了一个登陆窗口,用于验证登录用户...
情况说明:
个人编写的一个小程序,主要用来登记单位人员各类杂费报销,vs2008 C#,因为功能比较单一,使用sqlce3.5嵌入式开发。
设计了一个登陆窗口,用于验证登录用户的权限,在sqlce中有个表sysconfig,里面有两个字段,cfg_name和cfg_values,用于系统需要的部分参数,其中有个决定是否自动登录的参数,cfg_name=loginornot,设想在cfg_values=login时跳过登陆窗口(通过progam.cs判断,已经实现),默认是cfg_values=not。如果需要自动登录,选择checkBox,update 那个cfg_values=login。
程序运行后(vs里面调试),选中checkBox,下次运行能够自动跳过登陆窗口,按理说此时cfg_values应该是login,可是在vs2008服务器资源管理器中显示sysconfig表的内容,发现cfg_values仍旧是not,并且,一旦你运行了服务器资源管理器察看了sysconfig的数据后,再次运行程序又变成需要登陆的状态(因为cfg_values=not了)。
简而言之,我的代码仿佛只是在内存中更改了cfg_values的值似的。
选中checkBox后更新参数的语句如下:
if (logincheckBox.Checked)
{
string ckupdasql = "UPDATE sysconfig SET cfg_values = N'login' WHERE (sysconfig.cfg_name = 'loginornot')";
SqlCeCommand ckupdacommand = new SqlCeCommand();
ckupdacommand.Connection = myconn;
ckupdacommand.CommandText = ckupdasql;
ckupdacommand.ExecuteNonQuery();
}
希望高手能给看一看,还是我的语句少了一步什么。那句update语句是服务器资源管理器自动生成的,单纯测试这条语句通过。
补充一下,数据库用的是Microsoft SQL Server Compact Edition 3.5 sp1,用过得就知道在vs里面有自己的类,就是在命令里面多了个ce,比如SqlCeCommand,而不是SqlConmand。还有就是用在pc机上面的,单纯作为一个数据库使用,总不至于为了这个小程序还安装Sql Server 2008 Express。
还有myconn的定义是在if语句之外,已经打开。 展开
个人编写的一个小程序,主要用来登记单位人员各类杂费报销,vs2008 C#,因为功能比较单一,使用sqlce3.5嵌入式开发。
设计了一个登陆窗口,用于验证登录用户的权限,在sqlce中有个表sysconfig,里面有两个字段,cfg_name和cfg_values,用于系统需要的部分参数,其中有个决定是否自动登录的参数,cfg_name=loginornot,设想在cfg_values=login时跳过登陆窗口(通过progam.cs判断,已经实现),默认是cfg_values=not。如果需要自动登录,选择checkBox,update 那个cfg_values=login。
程序运行后(vs里面调试),选中checkBox,下次运行能够自动跳过登陆窗口,按理说此时cfg_values应该是login,可是在vs2008服务器资源管理器中显示sysconfig表的内容,发现cfg_values仍旧是not,并且,一旦你运行了服务器资源管理器察看了sysconfig的数据后,再次运行程序又变成需要登陆的状态(因为cfg_values=not了)。
简而言之,我的代码仿佛只是在内存中更改了cfg_values的值似的。
选中checkBox后更新参数的语句如下:
if (logincheckBox.Checked)
{
string ckupdasql = "UPDATE sysconfig SET cfg_values = N'login' WHERE (sysconfig.cfg_name = 'loginornot')";
SqlCeCommand ckupdacommand = new SqlCeCommand();
ckupdacommand.Connection = myconn;
ckupdacommand.CommandText = ckupdasql;
ckupdacommand.ExecuteNonQuery();
}
希望高手能给看一看,还是我的语句少了一步什么。那句update语句是服务器资源管理器自动生成的,单纯测试这条语句通过。
补充一下,数据库用的是Microsoft SQL Server Compact Edition 3.5 sp1,用过得就知道在vs里面有自己的类,就是在命令里面多了个ce,比如SqlCeCommand,而不是SqlConmand。还有就是用在pc机上面的,单纯作为一个数据库使用,总不至于为了这个小程序还安装Sql Server 2008 Express。
还有myconn的定义是在if语句之外,已经打开。 展开
展开全部
首先问下,是做的手机开发吧?智能手机那种,是的话再往下看,不是的话就可能不对了,首先,如果代码没有错的话,我问下,就是
UPDATE sysconfig SET cfg_values = N'login' WHERE
怎么'login' 前面还有个N,是怎么回事?
言归正传,楼主的问题我原来也遇到过,其实并不是代码的事情,而是你每次运行的时候都得部署到智能设备不是,也就是你每次部署的时候都把你更改后的手机数据库给还原了,不知道这样说你能明白不?解决的话不要部署数据库,而是使用手机本身的数据库,这样就不怕部署的时候还原成你VS里面开始设计的数据库了,应该明白了吧~~~
我也补充一句:如果没有Microsoft SQL Server Compact Edition 3.5 或更高版本,就是你需要的话,你还就得安装2008···还有,这个好像是在VS2008里面吧,记不清了···
UPDATE sysconfig SET cfg_values = N'login' WHERE
怎么'login' 前面还有个N,是怎么回事?
言归正传,楼主的问题我原来也遇到过,其实并不是代码的事情,而是你每次运行的时候都得部署到智能设备不是,也就是你每次部署的时候都把你更改后的手机数据库给还原了,不知道这样说你能明白不?解决的话不要部署数据库,而是使用手机本身的数据库,这样就不怕部署的时候还原成你VS里面开始设计的数据库了,应该明白了吧~~~
我也补充一句:如果没有Microsoft SQL Server Compact Edition 3.5 或更高版本,就是你需要的话,你还就得安装2008···还有,这个好像是在VS2008里面吧,记不清了···
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询