www.gusucode.com > 学生管理系统的一个例子GUI界面的管理matlab源码程序 > 学生管理系统的一个例子GUI界面的管理matlab源码程序/Matlab_database_GUI/LinkDB.m

    function f=LinkDB(DB_path,DB_sourcename,Index)
%本函数是用来自动配置数据库源文件。该函数仅适用于配置Access数据源。
%调用格式
%linkDB(DB_path,DB_sourcename,1)
%DB_sourcename='godman'
%DB_path='D:\Program Files\MATLAB71\work\demo.mdb'
%函数运行后将产生文件regedit_DB.reg
%Index=1时要删除regedit_DB.reg,Index=0时不删除regedit_DB.reg
%Godman 2009.4.3 tntuyh@163.com
TempStr1=StrSpliteToCell(DB_path,'\');
TempStr2=CellStrJoinWithSeparator(TempStr1,'\\\\');
DB_path=TempStr2.ans;
%add sourcename
fid=fopen('regedit_DB.reg','wt');
String='Windows Registry Editor Version 5.00\n\n';
fprintf(fid,String);
String='[HKEY_CURRENT_USER\\Software\\ODBC\\ODBC.INI\\ODBC Data Sources]\n';
fprintf(fid,String);
String=strcat(['"' DB_sourcename '"'],'="Microsoft Access Driver (*.mdb)"\n\n');
fprintf(fid,String);
%add filepath
String=['[HKEY_CURRENT_USER\\Software\\ODBC\\ODBC.INI\\',DB_sourcename,']\n'];
fprintf(fid,String);
String='"Driver"="C:\\\\WINDOWS\\\\system32\\\\odbcjt32.dll"\n';
fprintf(fid,String);
String=['"DBQ"="',DB_path,'"\n'];
fprintf(fid,String);
String='"DriverId"=dword:00000019\n';
fprintf(fid,String);
String='"FIL"="MS Access;"\n';
fprintf(fid,String);
String='"SafeTransactions"=dword:00000000\n';
fprintf(fid,String);
String='"UID"=""\n\n';
fprintf(fid,String);
%add jet
String=['[HKEY_CURRENT_USER\\Software\\ODBC\\ODBC.INI\\',DB_sourcename,'\\Engines]\n\n'];
fprintf(fid,String);
String=['[HKEY_CURRENT_USER\\Software\\ODBC\\ODBC.INI\\',DB_sourcename,'\\Engines\\Jet]\n'];
fprintf(fid,String);
String='"ImplicitCommitSync"=""\n';
fprintf(fid,String);
String='"MaxBufferSize"=dword:00000800\n';
fprintf(fid,String);
String='"PageTimeout"=dword:00000005\n';
fprintf(fid,String);
String='"Threads"=dword:00000003\n';
fprintf(fid,String);
String='"UserCommitSync"="Yes"\n';
fprintf(fid,String);
%
fclose(fid);
%打开regedit_DB.reg文件,将链接信息导入到注册表中
dos('regedit_DB.reg');
if Index==1
    delete('regedit_DB.reg');
end


function f=StrSpliteToCell(Str1,Str2)
%DataPath ='D:\Program Files\MATLAB71\work\data.txt'
%Str='\'
%StrSpliteToCell(DataPath, Str)
%ans = 
% 'D:'    'Program Files'    'MATLAB71'    'work'    'data.txt'
Len1=length(Str1);
Len2=length(Str2);
Temp=strfind(Str1,Str2);
Temp=[1-Len2 Temp Len1+1];
CellLen=length(Temp)-1;
TempCell=cell(1,CellLen);
for i=1:CellLen
    TempCell(i)={Str1(Temp(i)+Len2:Temp(i+1)-1)};
end
f=TempCell;


function f=CellStrJoinWithSeparator(Array,varargin)
%本函数是用来把元胞格式转换为字符串格式
%str={'Godman','come','back!'};
%CellStrJoinWithSeparator(str,' ')
%ans = 
%    Message: ''
%     ErrNum: 0
%        ans: 'Godman come back!'
f.Message='';
f.ErrNum=0;
f.ans='';
if isempty(varargin)
    Str=' ';
else
    Str=varargin{1};
end
if isempty(Array)
    f.Message='第一个参数不能为空!';
elseif ~iscellstr(Array)
    f.Message='第一个参数必须是cellstr数据类型!';
elseif ~ischar(Str)
    f.Message='第二个参数必须是str数据类型!';
end
if isempty(Str)
    Str=' ';
end
if f.Message
    f.ErrNum=1;
    f.ans='';
    return
end
len=length(Array);
temp=cell2mat(Array(1));
for i=2:len
    temp=strcat(temp,[Str,cell2mat(Array(i))]);
end
f.ErrNum=0;
f.ans=temp;