在winform系统中,连接数据库连接字符串在开发时会由dataset设计器自动生成并写在app.config中,我想将其中的用户名和口令加密,但是由于global::xxx.Properties.Settings.Default.xxxConnectionStringtableadapter是只读的,不能在运行时赋值,无法在app.config中写加密字符串,请问大家是怎么处理的.

解决方案 »

  1.   

    我觉得在系统启动后,让用户自己输入用户名和口令为妥当,再加载数据什么的。如果觉得用户不必要知道密码的话,那你把密码加密后放到.txt文件中,也没必要放到app.config里啊。引用:
    ==============================
    连接数据库连接字符串在开发时会由dataset设计器自动生成并写在app.config中
    ==============================
    估计是你为了省事,这样做不对的,要动态加载,先建立一个数据库连接类,然后再代码实现dataset的创建,这样的话就用不着 app.config了
      

  2.   

    可以把串写道app.config中,可以写入加密串, 然后在程序中,读出来,解密后,赋到一个字符串中,这样你再用这个字符串连接数据库,
      

  3.   

    开发时自动建立了settings的数据库连接串后,调试程序很方便,有些代码如窗口的combo等的数据绑定都是在设计器上实现的,所以dataset的建立和连接都在自动生成代码中实现了.你是说应该手动建立dataset,然后设置每个用到的tableadapter的connect属性么?我也这么想过,就是麻烦了些.我想找个比较简便的方法,比如程序启动后,我通过读取自设定的ini加密配置文件,建立数据库连接串,然后给global::xxx.Properties.Settings.Default.xxxConnectionStringtableadapter赋值,使所有dataset的数据库连接串都变过来.qfkfw(空军一号) 兄弟说的有些简单了,除非你不用dataset编辑器.============================================
    估计是你为了省事,这样做不对的,要动态加载,先建立一个数据库连接类,然后再代码实现dataset的创建,这样的话就用不着 app.config了
      

  4.   

    手动将加密后的字符串写入App.config中然后在程序中解密
      

  5.   

    dataset中的tableadapter默认是自动连接的,它的连接是通过读取global::xxx.Properties.Settings.Default.xxxConnectionStringtableadapter的值,但是这个值是只读的,所以无法在程序启动后修改.=====================================
    tuyile006(小y)
    手动将加密后的字符串写入App.config中然后在程序中解密
      

  6.   

    个人认为比较好的做法为由客户端选择数据库联接字符串关键字或在<程序>.exe.config文件中只保存数据链接关键字,登陆时发送关键字到服务器端,在服务器端通过关键字找到真正的链接字符串返回到客户端。数据的传输最好加密,简单的实现可以使用,System.Security.SecureString,该封闭类在2.0中提供,无论怎么样,要安全加密是肯定需要的。
      

  7.   

    在这个论坛搜索App.config出来这种类似的问题一大把
      

  8.   

    如果想真的实现数据安全,最好加一层操作数据的Webservice(例如List,Append,Delete,Modify),所有安全认证的东西在这一层实现才好,否则通过客户端直接操作数据库的话,总有不安全的地方,且一旦数据库的密码进行了修改,还要修改所有客户端。
      

  9.   

    虽然没有更简便的解决方案,不过还是谢谢大家的热心参与,我是刚从员传统的的数据库编程转到.NET开发,也许很多思维方式尚未完全适应这个架构,好吧,就此结贴,答者有其分