Foxtable(狐表)用户栏目专家坐堂 → [求助]


  共有2655人关注过本帖树形打印复制链接

主题:[求助]

帅哥哟,离线,有人找我吗?
zswushi
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:185 积分:1729 威望:0 精华:0 注册:2016/5/30 16:23:00
[求助]  发帖心情 Post By:2016/12/19 10:44:00 [显示全部帖子]

老师们好!

    我想在 项目文件夹 做个类似 INI 配置文件,然后在 BeforeConnectOuterDataSource 事件中,读取它的参数,来连接外部数据源 ,配置文件 类似  

[ConDB_]
SERVER_NAME=a00
DB_NAME=wushi
USERID=sa
PW=1213456

这样 , server _ name  对应于 data source ;  db_name 对应于 :Initial Catalog  ;  userid 对应于 User ID; PW对应 password ;

若有密码是:链接字符串开始为:Provider=SQLOLEDB;Password = “****** ”,Persist Security Info=True;;

若没有密码时:  链接字符串开始为:Provider=SQLOLEDB.1,Persist Security Info=false;

打开项目文件时 ,若 连接成功,直接进入登录界面,若登录不成功,提示 ,“创建外部连接失败........”,点确定后 ,能弹出 设置数据源链接的窗口 ,待输入正确的服务器名,数据库名时 ,能连接数据源进入系统,否则,还是弹出设置界面的对话框


该怎样 写这些代码?谢谢!我已浏览过 许多  关于 这类文件的 帮助文件,但总是无从下手,谢谢高手赐教!!!

  
 




 回到顶部
帅哥哟,离线,有人找我吗?
zswushi
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:185 积分:1729 威望:0 精华:0 注册:2016/5/30 16:23:00
  发帖心情 Post By:2016/12/19 11:47:00 [显示全部帖子]

大概知道了思路,但还是没有相关的例子代码呀,若有类似的例子代码更好!!

多谢赐教  !!!


 回到顶部
帅哥哟,离线,有人找我吗?
zswushi
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:185 积分:1729 威望:0 精华:0 注册:2016/5/30 16:23:00
  发帖心情 Post By:2016/12/19 18:50:00 [显示全部帖子]

我消化下,谢谢 !那个加密的配置文件,我可以自己不加密呀,就不需要之前的那一段吗??


 回到顶部
帅哥哟,离线,有人找我吗?
zswushi
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:185 积分:1729 威望:0 精华:0 注册:2016/5/30 16:23:00
  发帖心情 Post By:2016/12/20 10:04:00 [显示全部帖子]

我的总体思路是 :1、在项目文件夹 自己用记事本文件 (改变类型)  做个config. ini 的 配置文件(不用加密,解密的功能);例如:
                                      [ConDB_]
                                     服务器名 =A00
                                    数据库名=wushi
                                    登录用户=sa
                                    登录密码=123456
                                    连接时间 =   20                  '连接时间限定,假定用 20 秒 来做单位
                                                                    
                                     2、在 BeforeConnectOuterDataSource 事件中 ,读取 config 文件的值;然后填写到  字符串:  Provider=SQLOLEDB;Password=87686269;Persist Security Info=True;User ID=sa;Initial Catalog=X0;Data Source=a00  中, 让该字符串的值,跟 config 的值一样;

                          3、测试更改后的 字符串是否能连接通,若能联通,就正常进入系统;
                           若不能联通,就提示出错(最好限定“time ”时间,比如 20秒),弹出 “config”对话框,修改参数后,若参数值 正确 方可进入系统,否则一直提示,参数 设置错误;除非是 关掉 项目;
                          
                          4、恳请老师们,最好能把完整代码 写下来,我自己再去变通,本人不胜感激!!

[此贴子已经被作者于2016/12/20 11:16:11编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
zswushi
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:185 积分:1729 威望:0 精华:0 注册:2016/5/30 16:23:00
  发帖心情 Post By:2016/12/20 10:10:00 [显示全部帖子]

data  source 可以改成中文 :服务器名;

 Initial Catalog   可以改成  数据库名:

 USER ID              可以改成: 登录账户;

 Password         可以改成:  登录密码

 time  :         可以改成    连接时间           
  
不胜感激!!!




 回到顶部
帅哥哟,离线,有人找我吗?
zswushi
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:185 积分:1729 威望:0 精华:0 注册:2016/5/30 16:23:00
  发帖心情 Post By:2016/12/20 10:18:00 [显示全部帖子]

读值 我都会呀,替换时,也会,但连接字符串,跟 例子的不一致呀



 回到顶部
帅哥哟,离线,有人找我吗?
zswushi
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:185 积分:1729 威望:0 精华:0 注册:2016/5/30 16:23:00
  发帖心情 Post By:2016/12/20 11:13:00 [显示全部帖子]

不是我不愿意自食其力 ,是因为我读取 ini 后,如何把 链接字符串的 值 替换掉,然后 ,链接字符串的 格式还不变 ,后边可以 测试这个字符串 是否能连接通 

比如下边的代码:
Dim str1 As String = Filesys.ReadAllText(ProjectPath & "config.ini",system.text.encoding.default)
Dim str2() AS String = Str1.Split(vblf)
Dim str3() As String
For i As Integer =1 To str2.length -1
   str3 = str2(i).split("=")
   If str3.length = 2 Then

接着要声明 链接字符串的变量 以及拆分 字符串的变量 , 以及 把字符串的值 替换成  INI里的值呀,生成新的字符串,,我开发软件系统数据库是 sQL 的,生成的字符串,是跟例子里的不一致的,例子里的没有读取 数据源的名称,以及 设置 sa 的密码呀

比如:我软件里生成的 字符串 为: “ Provider=SQLOLEDB;Password=87686269;Persist Security Info=True;User ID=sa;Initial Catalog=X0;Data Source=a00”

而例子里的 是:   e.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & e.ProjectPath & "数据文件1.mdb;Persist Security Info=False"  , 这里有些不一致呀,

它直接读取的是 数据库的文件,我认为 链接字符串,应该包括 有密码,以及密码为空的 情况,有服务器名,数据库名,登录数据库的账户呀,所以 总是跳不出 那个 圈,

谢谢  !


[此贴子已经被作者于2016/12/20 11:18:37编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
zswushi
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:185 积分:1729 威望:0 精华:0 注册:2016/5/30 16:23:00
  发帖心情 Post By:2016/12/20 11:45:00 [显示全部帖子]

老师:

您好!

能否接着 6楼的代码 继续写 链接字符串的变量,以及 替换 INI值得变量,替换后,得到新 字符串的 变量的代码 ??

后续测试是否能联通,我自己 去添加就可以啦,多谢老师指导 ??这些代码,我自己去写的话,有时要改几天,哎!

非常感谢!!

 回到顶部
帅哥哟,离线,有人找我吗?
zswushi
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:185 积分:1729 威望:0 精华:0 注册:2016/5/30 16:23:00
  发帖心情 Post By:2016/12/20 16:25:00 [显示全部帖子]

老师:
    您好!我的代码如下:

If filesys.FileExists(projectPath & "config.ini") Then
    Dim str1 As String = Filesys.ReadAllText(ProjectPath & "config.ini",system.text.encoding.default)
    Dim str2() As String = Str1.Split(vblf)
    Dim str3() As String
    Dim zf1,zf2,zf3,zf4 As String
    For i As Integer =1 To str2.length -1
        str3 = str2(i).split("=")
        If str3.length = 2 Then
            If str3(0).contains("服务器名") Then
                zf1 = str3(2)
            ElseIf str3(0).contains("数据库名") Then
                zf2 = str3(2)
            ElseIf str3(0).contains("登录账户") Then
                zf3 = str3(2)
            ElseIf str3(0).contains("登录密码") Then
                zf4 = str3(2)
            End If
        End If
    Next
    Dim CnString As String
    If zf4 = "" Then
        cnstring = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID= & zf3;Initial Catalog= & zf2;Data Source= & zf1"
    ElseIf zf4 > "" Then
        cnstring = "Provider=SQLOLEDB;Password= & zf4;Persist Security Info=True;User ID= & zf3;Initial Catalog= & zf2;Data Source= & zf1"
    End If
    If Connections.TryConnect(CnString) = True Then
        e.ConnectionString = CnString
    Else
        messagebox.show("无法连接到数据库,请联系管理员.","警告",MessageBoxButtons.OK,MessageBoxIcon.Warning)
        Syscmd.Project.Exit()
        Return
    End If
Else
    messagebox.show("没有找到系统配置文件,无法连接到数据,请联系管理员.","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Syscmd.Project.Exit()
    Return
End If

但运行后,出现的问题是  “应用程序 发生异常,未知的软件异常 (0*e0434f4d),位置 为 0*7c812fd3”

请协助解决,非常感谢!!

 回到顶部
帅哥哟,离线,有人找我吗?
zswushi
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:185 积分:1729 威望:0 精华:0 注册:2016/5/30 16:23:00
  发帖心情 Post By:2016/12/20 16:57:00 [显示全部帖子]

我改成这样,怎么还是提示不行,我试过, 加上 if e.name = " & zf2 & " then  还是一样的效果呀


    Dim CnString As String
        If zf4 = "" Then
            cnstring = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=" & zf3 & ";Initial Catalog=" & zf2 & ";Data Source=" & zf1 
        ElseIf zf4 > "" Then
           cnstring = "Provider=SQLOLEDB;Password=" & zf4 & ";Persist Security Info=True;User ID=" & zf3 & ";Initial Catalog=" & zf2 & ";Data Source=" & zf1
        End If
    If Connections.TryConnect(CnString) = True Then
        e.ConnectionString = CnString
    Else
        messagebox.show("无法连接到数据库,请联系管理员.","警告",MessageBoxButtons.OK,MessageBoxIcon.Warning)
        Syscmd.Project.Exit()
        Return
    End If
图片点击可在新窗口打开查看此主题相关图片如下:登录界面.jpg
图片点击可在新窗口打开查看

提示的内容是:   


 回到顶部
总数 12 1 2 下一页