如何连接局域网中带用户名和密码的数据库(.mdb)?最后解决方法采用SQL做数据库
最近小弟在做一个公司内部多人“交互使用”的软件。有关于一个数据库安全的问题想请问一下各位达人。现况:我的数据库是放在局域网内的一部电脑的共享文件夹内,权限要打开完全控制。.mdb的数据库才能正常连接、编辑、读取、删除数据。
问题:就是这里,数据库文件(.mdb)在同一局域网的任何一台电脑都可以删除这个文件。一点安全性都没有。删了变得软件又没有数据库了。
我有个想法,但还没有实现功能的很好方法。你来帮一下我吧。
1、放置数据库的电脑在局域网中设置访问时需要输入用户名和密码。
代码如何实现?困惑我多时了。不胜感谢!:face (31):
部分连接代码,参考:
补图参考:
图解:数据库放在局域网的这台电脑上的一个共享文件夹内,我要使用什么语句才能正确连接(.mdb)文件作其它操作。例如:读取、编辑、删除数据表内容?
$datadir = @ScriptDir & "\data_zzc.mdb" ;现在是连接本地的数据库没有问题。
$conn = ObjCreate("ADODB.Connection")
$RS = ObjCreate("ADODB.Recordset")
$conn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & $datadir & ";Jet Oledb:Database Password=密码")
$RS.ActiveConnection = $conn
$RS.open ("select * from 表名" )
$data = '"' & GUICtrlRead($CaiGou_Combo) & '"'
For $j = 2 To $RS.Fields.Count - 2 Step 1
$data = $data & "," & '"' & GUICtrlRead($CaiGou_Combo[$j]) & '"'
Next
$List = $RS.Fields.Item (0).Name
For $i = 1 To $RS.Fields.Count - 3
$List = $List & "," & $RS.Fields.Item ($i).Name
Next
$add = 'insert into ' & $hardware & ' (' & $List & ') values (' & $data & ')'
$conn.Execute($add)
$conn.close
[ 本帖最后由 华杰 于 2008-5-11 14:05 编辑 ] 这里 $datadir = @ScriptDir & "\data_zzc.mdb"设置成局域网共享机器不行?
有没有试试先连接这台电脑.获得需要的权限.
感兴趣,希望楼主搞定.
:face (14): 回到 SQL 語句的問題上才是解決的根本方式
使用
$RS.open ("select * from 表名" )
這樣的做法,利用封包抓取軟件可以輕易的獲取表名還有值
建議可以先判斷使用者名稱密碼後
返回ID值再去取欄位名稱和值 原帖由 gooker 于 2008-5-5 11:34 发表 http://www.autoitx.com/images/common/back.gif
这里 $datadir = @ScriptDir & "\data_zzc.mdb"设置成局域网共享机器不行?
有没有试试先连接这台电脑.获得需要的权限.
感兴趣,希望楼主搞定.
:face (14):
首先感谢你的支持。回应一下:设置成局域网共享机器访问,数据库是可以成功访问和做读写操作。但这不是我想要的
我要设置一个有用户名和密码才能访问的方式。(注:不是数据库本身设置的密码)
是局域网访问的用户名和密码。
再回3楼:我的数据不是很保密的,不用绝对很安全。但我最主要的目的是防止别人删掉我整个数据库。SQL语句我不会。再请指教,给个例子最好,
:face (20): 谢谢你们。 你给共享文件夹设个权限,能修改库,不能删除库
属性--安全--高级,不选中“允许……传播给该对象”,点击“查看--编辑”,
去掉“删除子文件夹及文件”
我没测试过数据库。但是用文件测试过,可以修改,但不能删除
这样的程序应该用SQL ,多方便 原帖由 rho123 于 2008-5-5 18:11 发表 http://www.autoitx.com/images/common/back.gif
你给共享文件夹设个权限,能修改库,不能删除库
属性--安全--高级,不选中“允许……传播给该对象”,点击“查看--编辑”,
去掉“删除子文件夹及文件”
我没测试过数据库。但是用文件测试过,可以修改,但不能删 ...
我的硬盘的格式不是NTFS的,是FAT32,你所说的我这里没有这一项,但我会去尝试,谢谢。
请问rho123你能不能提供一下有关AU3操作SQL的语句的例子,非常感谢。希望你们能成就我。 像这种程序装个SQL数据库又安全又方便 :face (18):
都叫我用SQL,可惜我不会啊。大家有没有例子,或者SQL自定义函数?大家提供一下,谢谢 提個疑問
既然用戶權限擁有刪除的屬性
那麼就一定能刪除
提個小意見參考是否可行
1. 使用程式刪除時,刪除的按鈕當驗證過後則可以顯示,也就是才能按下去的意思
2. MD 裡面加個資料表, 有 USER / PASSWORD / 權限 等設置,例如讀取到權限 1= 能讀,2= 能讀能寫 3=能讀能寫能刪除
3.一開始先讀取這權限再去調適GUI的設置分別去顯現 讀取寫入 刪除等按鈕
不過話回到頭,有了基礎權限,網路上大把的封包檢測軟體, 一般同事不懂的只是不懂你欄位放哪裡或是檔名叫什麼
要是懂得,直接透過網芳就能作怪啦 原帖由 abiteric 于 2008-5-5 21:21 发表 http://www.autoitx.com/images/common/back.gif
提個疑問
既然用戶權限擁有刪除的屬性
那麼就一定能刪除
提個小意見參考是否可行
1. 使用程式刪除時,刪除的按鈕當驗證過後則可以顯示,也就是才能按下去的意思
2. MD 裡面加個資料表, 有 USER / PASSWORD...
这些小意见都是一个很好的方法,但我觉得用在我这个问题还不能完全解决。
我要的是在局域网共享文档中不能删除或者使用WINXP自带的用户名和密码才能删除/。又要不影响读、写数据表。
多谢你的意见! 设置共享权限不就可以了;
在共享的主机上新建一个用户并设置密码,共享有数据库的文件夹时,点击“权限”,再点“添加”,输入刚才新建的用户,再给予“完全控制”权限。
客户机用DriveMapAdd("", "\\myserver2\mdb", 0, "user", "pass")来与主机连接! 原帖由 Amu 于 2008-5-6 01:54 发表 http://www.autoitx.com/images/common/back.gif
设置共享权限不就可以了;
在共享的主机上新建一个用户并设置密码,共享有数据库的文件夹时,点击“权限”,再点“添加”,输入刚才新建的用户,再给予“完全控制”权限。
客户机用DriveMapAdd("", "\\myserver2 ...
你这样别人可以直接删除数据库 你这是磁盘映射,可以直接MDB 删除吧 我还没学到哪。。等学到了再帮帮你
先标记个,以后好学习:face (33): :face (33): :face (33): 原帖由 xyz161314 于 2008-5-6 00:26 发表 http://www.autoitx.com/images/common/back.gif
这是一小段SQL连接代码 希望对你有帮助
$pro= ObjCreate("ADODB.Connection")
$RS = ObjCreate("ADODB.Recordset")
$pro.Open ("driver={SQL Server};server=192.168.0.251;uid=test;pwd=test;database=test")
$ ...
这个代码让我看到SQL的方便性,我决定使用SQL Server类代码。希望你胶有更多这方面的代码提供一下给予我们参考/。非常感谢。 SQL 和ACC 语法都一样啊。只是打开库不一样
如果会写ASP ,那这个就不在话下
=====================================
func sql()
if Ping($Sqlip,1000) <> 0 then
$conn = ObjCreate("ADODB.Connection")
$RS = ObjCreate("ADODB.Recordset")
$conn.Open ("Provider=SQLOLEDB.1;Connect Timeout=10;Data Source="& $Sqlip &";Password=" & $Sqlpass & ";Persist Security Info=False;User ID=" &$Sqlid & ";Initial Catalog=kfgl")
$RS.ActiveConnection = $conn
$RS.open ("select * from fjsz where fjbh="&$fjbh)
While (Not $RS.eof And Not $RS.bof)
GUICtrlSetData($lx, $RS.Fields (3).value)
$fjzt = $RS.Fields (5).value
ExitLoop
WEnd
$RS.close
$fjzt = StringStripWS ($fjzt,8)
if $fjzt = "使用"then
Return 0
Else
Return 1
EndIf
Else
Return 1
EndIf
EndFunc
[ 本帖最后由 rho123 于 2008-5-6 12:27 编辑 ]