1、创建Exchange管理员帐号
在安装Exchange服务器之前,首先要为您的Exchange组织创建第一个管理员帐号,用于日后专门管理Exchange服务器的安装和资源。首先在AD中先创建一个用户,然后将此用户添加的域管理员和本地管理员的组中。如下图:
然后用刚刚创建的Exchange管理员帐号登陆的域服务器上,插入Exchange 2003安装光盘,如果您的光驱支持自动播放,则会出现如下界面,如果不支持,可以点击光盘下的setup.exe调出如下界面。
图中左边是关于Exchange的一些信息以及微软网站上关于Exchange的一些链接,可以在安装之前仔细阅读一下,加深对Exchange server的了解。图中右边是Exchange 2003的一个部署工具。点击部署工具,根据自己实际工作场景和环境选择合适的安装方式。我们在此选择安装全新的Exchange2003服务器,然后出现安装任务别表,如下图:
2、检查操作系统版本和活动目录版本
Exchange 2003要求安装在Windows 2000 serverSP3或更高版本及Windows 2003 server上,在Windows的【开始】的【运行】里键入查看版本的命令:winver,弹出如下窗口。
3、安装必需服务
安装Exchange服务器,需要你的服务器上安装IIS、NNTP、SMTP、及万维网服务和ASP.NET.在控制面板的【添加删除程序】里选择【添加删除Windows组件】。如下图:
安装完成后,确认一下上述组件是否已经正常工作,打开开始菜单里的【管理工具】里的【服务】,查看是否已经有相应服务并且已经启动。
除此之外确认ASP.NET组件已经正常工作,在IIS的【Web服务扩展】中查看ASP.NET是否已经允许。如下图:
然后安装Windows支持工具,这些工具在后续步骤中会用到,在Windows2003操作系统光盘下的SUPPORT TOOL文件下TOOL的文件夹下点击SUPTOOLS.EXE。
5、检查活动目录和网络环境
在DOS环境下用dcdialg工具检测活动目录的运行情况,如下图,用netdiag工具检测网络环境运行状况,如下图:
这两个工具输出的信息比较大,所以可以通过管道输出到文本文件中,方便查看。打开输出的文件后查看两个文本文件中得信息,需要保证所有检测处于通过的状态。
然后使用netdom完成对fsmo的检测
用nltest命令完成对gc的检测
如果以上检测都没有什么问题,基本上可以开始在这个服务器上安装Exchange2003了。
6、森林拓展
安装Exchange服务器的第一步是对活动目录进行森林扩展,添加对Exchange各个对象的支持,这一步需要你的登陆帐号具有企业管理员权限、架构管理员权限、域管理员权限和本地计算机管理员权限。我们切换登陆帐号到Administrator帐号。点击Exchange安装向导中的立即运行ForestPrep。
7、域拓展
域拓展为Exchange服务器分配一些特定的权限保障Exchange服务器可以正常的运转。操作与森林拓展基本类似。
8、安装Exchange服务组件
最后我们进行安装Exchange服务器组件的最后一步即安装Exchange服务组件,我们首先用在森林拓展的时候指定的管理帐号登陆,然后在安装向导中运行立即运行安装程序,会打开Exchange安装向导,根据实际请选选择相应的组件,其中Exchange消息与协作服务是Exchange的核心组件,Lotus Notes连接器主要用于与Notes服务器的共存或迁移。日历连接器用户同步Notes服务器上的日历信息。Exchange系统管理工具用户管理Exchange server 2003。Exchange 5.5 Administrator用户管理Exchange5.5服务器。
选择新建Exchange组织,并输入组织名称。指定管理组名称,并单击下一步开始安装,整个安装过程根据机器性能需要的时间长短不一,一般来说需要时间比较长。
安装完成后我们如何确认Exchange服务器已经安装完成了呢?首先应该看到开始菜单中有Exchange的文件夹,另外打开【管理工具】中的【服务】管理工具,应该可以看到有许多Exchange相关的服务,并且有的已经启动,如下图,至此一个全新的Exchange服务器已经完全安装完毕。
1、开始菜单→运行-输入“cmd”进入命令提示符
2、在“命令提示符”里输入“bcdedit.exe”回车,可以查看到现有的两个(或者多个)启动项菜单的具体内容,找到废弃系统下resumeobject行类似{572bcd56-ffa7-11d9-aae0-0007e994107d}的代码。下图仅为bcdedit运行的一个例子,大家参考:
3、然后输入bcdedit /delete {代码},即可删除这个废弃的菜单。重新启动那个废弃的菜单就没有了。
第二种方法:
到http://www.vista123.com/vistamaster/下载一个vista优化大师,即可删除多余的系统启动菜单。这个比手工删除是简单多了。vista优化大师在2008下运行正常。
这是安装时的初始画面
三个版本可自行选择,默认第一项即可
开始安装,其中重启2次
安装完成
可以自定义桌面图标
取消UAC用户控制
取消系统登陆时,要求输入用户名和密码
开始→运行→输入“rundll32 netplwiz.dll,UsersRunDll”命令打开帐户窗口
在这里重新输入你的新密码
登入时,不显示服务管理器
取消IE增强的安全配置
两项全都点击禁用
主题和高级音频设为自动,为漂亮的画面和优美的音质做准备
点击运行:gpedit.msc 设为自动,点击启动。必须点啊,可别忘了!
同上
点击运行:gpedit.msc登入时,无需按。。。。。
点击运行:gpedit.msc设为禁用,要不关机时太麻烦
点击运行:gpedit.msc简单密码模式
我的电脑右键属性,进入设备管理器,磁盘属性
我的电脑右键属性,进入高级选项
打开服务管理器,选择功能
桌面体验不装,主题无法运行;会提示重新启动!
这是驱动优化设置完成打开特效后的的画面
这是激活后的画面
现在的破解还不是很完美
一些常用的技巧和问题
1.系统默认的资源分配是优先后台服务,我们做个更改,提高前台程序性能,解决的办法是右击电脑属性打开“高级系统设置”窗口,
切换到“高级”选项卡,单击“性能”区域下的“设置”按钮,再次切换的“设置”按钮,再次切换到“高级”选项卡,可以看到这里默认选择的是“后台服务”,请更改为“程序”,确认后即可生效。以后,Windows Server 2008会优先响应前台应用程序,而不是后台的默默服务。
2.加速启动速度,如果你使用的是单系统,安装Windows Server 2008的目的可能只是为了尝新鲜,那么完全可以关闭那些对单系统
来说没有什么实用价值的服务。方法是右击桌面上电脑属性窗口,在左侧任务窗格中选择“高级系统设置”,此时会打开与Windows XP一样的“系统属性”对话框,现在请在“启动和故障恢复”区域中单击“设置”按钮,将所有勾选的项目全部取消,同时将“写入调试信息”设置
为“无”。按应用就可。
3.点选开始——管理工具——服务,设Themes自动启动就可以应用vist主题,设Windows Image Acquisition(WIA)为自动启动,就可
以使用扫描仪和解决一般的设像头问题
4.修改为简单密码登陆:在运行中键入"gpedit.msc“,在组策略——计算机配置——安全设置——账户策略——密码策略中禁用密码必须
符合复杂性要求,Ctrl+Alt+ . —更改密码,修改为简单密码
5.在运行中键入 powercfg -h off 关掉休眠,右键点计算机——属性——高级系统设置——调整以优化性能改为“程序”,数据执行保护改
为“仅为基本。。。(这样CS等游戏就可以玩了)
6.关掉IE增强模式:在服务器管理(server manager)——configure IE ESC中,把user选为off,关掉标准用户的增强模式
7.2008修改权限的方法,让你完全控制
右键点击它选择 属性, 进入 安全 选项卡, 点击下面的 高级, 在新窗口中进入 所有者 选项卡, 点击 编辑, 选中 Administrators, 确定 关闭
全部对话框. 再次右击该文件选择 属性, 然后依次进入 安全 选项卡 -编辑 - 权限 选项卡 -编辑, 双击其中的Administrators, 勾选上完全控制 后面 允许 一列下面的复选框, 确定 关闭全部对话框.
现在已经取得了控制权。
8.创建标准用户,设置开机自动登陆:在 控制面板—用户里,建立一个标准用户,设置好密码,在运行中键入 control.exe userpasswords2,
选中新键的那个用户后,再把“要使用本机.。。。”的对勾去掉,确定后,弹出对话框,确认密码后(密码要和你账户原有的密码一致),再重启机器时,就直接用这个用户进入系统了,管理员的账户,非特别原因就不要再进了
9.给标准用户添加关机权限:点开始——管理工具——本地安全策略——用户权限分配——关闭系统中,添加标准户,使此用户有关机权限
10.如果3D游戏卡的厉害,在显卡的3D设置里关掉垂直同步
11.关闭手动关机时的询问对话框:在运行中输入gpedit.msc打开组策略,选计算机配置——管理模板——系统——禁用 显示“关事件跟踪程序”,
关机或重启时就不会出现询问对话框了
12.关闭自动播放:现在的U盘病毒大大流行,请先把控制面版——自动播放中“为所有媒体和设备使用自动播放”前面的对勾去掉,下载这个附件
到桌面( 打开U盘.rar ),我的U盘盘符是F, 下载后,右键点编辑,把"F"改为你的U盘盘符,以后插入U盘后,养成直接点桌面这个.bat文件,用Dos打开U盘窗口的习惯,防止双击U盘后感染上自动运行的病毒
13.防火墙设置:运行安全配置向导,安装VistaFirewallControl-Setup-i386,使防火墙的传入了传出都可以提醒并快速设置(如果要自行设置或
运行了安全配置向导后,无法打开文件共享与音频等问题,请参考 点这里查看
14.开启SuperFetch,建议大内存用户使用(开启方法见我的批处理文件),如担心损伤硬盘,也可以,在设备管理器—磁盘驱动器—右键点要
修改的磁盘的属性—策略里,启用磁盘上的写入缓存和高级性能两个选项
1、如何关闭UAC?
控制面板→用户帐户→打开或关闭用户账户控制→取消使用用户账户控制(UAC)帮助保护您的计算机。
2、如何取消开机按 CTRL+ALT+DEL登陆?
控制面板→管理工具→本地安全策略→本地策略→安全选项→交互式登陆:无须按CTRL+ALT+DEL→启用。
3。如何取消关机时出现的关机理由选择项?
开始→运行gpedit.msc →计算机配置→管理模板→系统→显示“关闭事件跟踪程序”→禁用。
4。如何实现自动登陆?
开始→运行→输入“rundll32 netplwiz.dll,UsersRunDll”命令打开帐户窗口,先选中要自动登陆的账户,去选“要使用本机,用户必须输入用户名
密码”复选框,输入该帐户的 密码即可(前提是要关闭UAC)。
5。如何取消每次开机的默认共享?
将下列内容导入注册表,重启即可(前提是要关闭UAC)。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Lanmanserver\Parameters]
"AutoShareServer"=dword:00000000
6。如何取消IE增强的安全配置?
服务器管理器→安全信息→配置IE ESC→弹出窗口中管理员和用户都选择禁用。
7。如何启用Vista主题?
1)服务器管理器→功能摘要→添加功能→选择安装桌面体验。
2)启动Themes服务,并设置启动类型为自动。
3)桌面右键→个性化→主题→选择相应的Vista主题。
8。如何启用摄像机,摄像头或者扫描仪等设备?
启动Windows Image Acquisition (WIA) 服务,并设置启动类型为自动。
9。如何打开显卡的硬件加速?
桌面右键→个性化→显示设置→高级设置→疑难解答→更该设置→硬件加速→完全。然后运行dxdiag,打开显示选项卡,会发现DirectX功能已经
全部启用了。
10。开启ICF后局域网内机器如何实现互访?
控制面板→Windows防火墙→取消阻止所有传入连接,并在“例外”中选中“文件和打印机共享”。
11。为何无法实现局域网互访?
从以下几个方面入手:
本地连接→右键属性→取消Internet协议版本6,缩短验证时间。
检查各机器所属工作组名称是否一致。
检查机器IP是否在同一网段,如192.168.1.X。
将网络和共享中心→网络连接→自定义→位置类型设置为专用,降低保护。
将网络和共享中心→共享和发现→网络发现启用,文件共享启用,密码保护的共享关闭。
12。如何设置IE浏览器代理?
打开IE工具栏的Internet选项→连接→拨号和虚拟专用网络设置中选中您的拨号连接→设置,在“设置”页面中,选中“对此连接使用代理服务器”然后
在“地址”栏中填上代理 服务器地址和端口,单击“确定”。
13。桌面上“计算机”图标消失了,要如何恢复?
桌面右键→个性化→更改桌面图标(左侧)。
14。如何快速复制文件、文件夹路径?
按 Shift 键,右键点击需要复制路径的文件、文件夹或快捷方式等,在弹出菜单里面有一项复制为路径(A),点击后可复制该文件、文件夹路径。
15。文件反向选择的快捷键是什么?
ALT+E弹出菜单后按I。
16。如何更改桌面上的图标的大小?
Ctrl+鼠标滚轮或者桌面右键→查看→经典图标。
17。如何察看系统许可信息?
运行slmgr.vbs -dlv。
18。某些应用程序无法运行,该如何处理?
尝试更改数据执行保护设置,控制面板→系统→高级系统设置→高级→性能→设置→数据执行保护→为除下列选定程序之外的所有程序和服务启用
DEP,添加该应用程序。
19。如何更改用户文档默认存放位置?
开始菜单→文档→右键属性→位置选项卡,更改为自定义的路径。
20。如何关闭休眠功能?
桌面右键→个性化→屏幕保护程序→更改电源设置→更改计算机的睡眠时间→使计算机进入睡眠状态设为从不。
21。如何彻底删除休眠文件?
系统盘右键→属性→常规→磁盘清理→选中休眠文件清理器→确定。
22。开始菜单电源按钮默认设定为“关机”,如何更改为“休眠”?
控制面版→电源选项→选中的“首选计划”→更改计划设置→更改高级电源设置,在弹出的设置窗口中找到“电源按钮和盖子”→“开始”菜单电源按钮→
设置→休眠,确定即可。
23。如何使用3D方式切换程序?
在开启Aero外观的情况下,使用Win(视窗键)+Tab可以使用3D方式切换程序,Win(视窗键)+Ctrl+Tab可以使程序3D窗口暂时停留在桌面上。
24。如何实现退出系统时清除最近打开的文档的历史?
开始→运行gpedit.msc →用户配置→管理模板→『开始』菜单和任务栏→退出系统时清除最近打开文档的历史,设为已启用就可以了。
方法一
一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大
、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如论坛数据库Forum)-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择“简单”,然后按确定保存
2、在当前数据库上点右键,看所有任务中的收缩数据库,一般里面的默认设置不用调整,直接点确定
3、收缩数据库完成后,建议将您的数据库属性重新设置为标准模式,操作方法同第一点,因为日志在一些异常情况下往往是恢复数据库的重要依据
方法二
SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
USE tablename -- 要操作的数据库名
Selct @LogicalFileName = 'tablename_log', -- 日志文件名
@MaxMinutes = 0, -- Limit on time allowed to wrap log.
@NewSize = -- 你想设定的日志文件的大小(M)
-- Setup / initialize
DECLARE @OriginalSize int
Selct @OriginalSize = size
FROM sysfiles
Whre name = @LogicalFileName
Selct 'Original Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages o ' +
CONVERT(VARCHAR(30),(@OriginalSize*8/024)) + 'MB'
FROM sysfiles
Whre name = @LogicalFileName
Crate TABLE DummyTrans
(DummyColumn char (8000) not null)
DECLARE @Counter INT,
@StartTime DATETIME,
@TruncLog VARCHAR(255)
Selct @StartTime = GETDATE(),
@TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'
DBCC SHRINKFILE (@LogicalFileName, @NewSize)
EXEC (@TruncLog)
-- Wrap the log if necessary.
WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired
AND @OriginalSize = (Selct size FROM sysfiles Whre name = @LogicalFileName)
AND (@OriginalSize * 8 /024) > @NewSize
BEGIN -- Outer loop.
Selct @Counter = 0
WHILE ((@Counter < @OriginalSize / 6) AND (@Counter < 50000))
BEGIN -- upate
Insrt DummyTrans VALUES ('Fill Log')
Delte DummyTrans
Selct @Counter = @Counter +
END
EXEC (@TruncLog)
END
Selct 'Final Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),size) + ' 8K pages o ' +
CONVERT(VARCHAR(30),(size*8/024)) + 'MB'
FROM sysfiles
Whre name = @LogicalFileName
Dro TABLE DummyTrans
SET NOCOUNT OFF
MySQL是免费的数据库,在成本上具有无可替代的优势,但是目前来讲,并没有提供。微软把MySQL当作ODBC数据库,可以按照ODBC.Net规范进行访问,具体参考
http://www.microsoft.com/china/community/Columns/Luyan/6.mspx
而实际上,针对ODBC。Net的需要配置DSN的麻烦,而是出现了一个开源的系统MySQLDriverCS,对MySQL的开发进行了封装,实现了.net环境下对于MySQL数据库系统的访问。
http://sourceforge.net/projects/mysqldrivercs/
通过阅读源代码,我们看到MySQLDriverCS的思路是利用C函数的底层库来操纵数据库的,通常提供对MySQL数据库的访问的数据库的C DLL是名为libmySQL.dll的驱动文件,MySQLDriverCS作为一个.net库进行封装C风格的驱动。
具体如何进行呢?
打开工程后,我们看到其中有一个比较特殊的.cs文件CPrototypes.cs:
以下是引用片段:
#region LICENSE
/*
MySQLDriverCS: An C# driver for MySQL.
Copyright (c) 2002 Manuel Lucas Vi馻s Livschitz.
This file is part of MySQLDriverCS.
MySQLDriverCS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, o
(at your option) any later version.
MySQLDriverCS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY o FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with MySQLDriverCS; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02-307 USA
*/
#endregion
using System;
using System.Data;
using System.Runtime.InteropServices;
namespace MySQLDriverCS
{
//[StructLayout(LayoutKind.Sequential)]
public class MYSQL_FIELD_FACTORY
{
static string version;
public static IMYSQL_FIELD GetInstance()
{
if (version==null)
{
version = CPrototypes.GetClientInfo();
}
if (version.CompareTo("4..2-alpha")>=0)
{
return new MYSQL_FIELD_VERSION_5();
}
else
return new MYSQL_FIELD_VERSION_3();
}
}
public interface IMYSQL_FIELD
{
string Name{get;}
uint Type{get;}
long Max_Length {get;}
}
///<summary>
/// Field descriptor
///</summary>
[StructLayout(LayoutKind.Sequential)]//"3.23.32", 4.0.-alpha
internal class MYSQL_FIELD_VERSION_3: IMYSQL_FIELD
{
///<summary>
/// Name of column
///</summary>
public string name;
///<summary>
/// Table of column if column was a field
///</summary>
public string table;
//public string og_table; /* og table name if table was an alias */
//public string db; /* Database for table */
///<summary>
/// def
///</summary>
public string def;
///<summary>
/// length
///</summary>
public long length;
///<summary>
/// max_length
///</summary>
public long max_length;
///<summary>
/// Div flags
///</summary>
public uint flags;
///<summary>
/// Number of decimals in field
///</summary>
public uint decimals;
///<summary>
/// Type of field. Se mysql_com.h for types
///</summary>
public uint type;
///<summary>
/// Name
///</summary>
public string Name
{
get{return name;}
}
///<summary>
/// Type
///</summary>
public uint Type
{
get{return type;}
}
///<summary>
/// Max_Length
///</summary>
public long Max_Length
{
get {return max_length;}
}
}
///<summary>
/// Field descriptor
///</summary>
[StructLayout(LayoutKind.Sequential)]
internal class MYSQL_FIELD_VERSION_5: IMYSQL_FIELD
{
///<summary>
/// Name of column
///</summary>
public string name;
///<summary>
/// oiginal column name, if an alias
///</summary>
public string og_name;
///<summary>
/// Table of column if column was a field
///</summary>
public string table;
///<summary>
/// og table name if table was an alias
///</summary>
public string og_table;
///<summary>
/// Database for table
///</summary>
public string db;
///<summary>
/// Catalog for table
///</summary>
//public string catalog;
///<summary>
/// def
///</summary>
public string def;
///<summary>
/// length
///</summary>
public long length;
///<summary>
/// max_length
///</summary>
public long max_length;
///<summary>
/// name_length
///</summary>
//public uint name_length;
///<summary>
/// og_name_length
///</summary>
public uint og_name_length;
///<summary>
/// table_length
///</summary>
public uint table_length;
///<summary>
/// og_table_length
///</summary>
public uint og_table_length;
///<summary>
/// db_length
///</summary>
public uint db_length;
///<summary>
/// catalog_length
///</summary>
public uint catalog_length;
///<summary>
/// def_length
///</summary>
public uint def_length;
///<summary>
/// Div flags
///</summary>
public uint flags;
///<summary>
/// Number of decimals in field
///</summary>
public uint decimals;
///<summary>
/// Character set
///</summary>
public uint charsetnr;
///<summary>
/// Type of field. Se mysql_com.h for types
///</summary>
public uint type;
///<summary>
/// Name
///</summary>
public string Name
{
get {return name;}
}
///<summary>
/// Type
///</summary>
public uint Type
{
get {return type;}
}
///<summary>
/// Max_Length
///</summary>
public long Max_Length
{
get {return max_length;}
}
}
//[StructLayout(LayoutKind.Explicit)]
public enum enum_field_types
{
FIELD_TYPE_DECIMAL, FIELD_TYPE_TINY,
FIELD_TYPE_SHORT, FIELD_TYPE_LONG,
FIELD_TYPE_FLOAT, FIELD_TYPE_DOUBLE,
FIELD_TYPE_NULL, FIELD_TYPE_TIMESTAMP,
FIELD_TYPE_LONGLONG,FIELD_TYPE_INT24,
FIELD_TYPE_DATE, FIELD_TYPE_TIME,
FIELD_TYPE_DATETIME, FIELD_TYPE_YEAR,
FIELD_TYPE_NEWDATE,
FIELD_TYPE_ENUM=247,
FIELD_TYPE_SET=248,
FIELD_TYPE_TINY_BLOB=249,
FIELD_TYPE_MEDIUM_BLOB=250,
FIELD_TYPE_LONG_BLOB=25,
FIELD_TYPE_BLOB=252,
FIELD_TYPE_VAR_STRING=253,
FIELD_TYPE_STRING=254,
FIELD_TYPE_GEOMETRY=255
};
///<summary>
/// C prototypes warpper for mysqllib.
///</summary>
internal class CPrototypes
{
[ DllImport( "libmySQL.dll", EntryPoint="mysql_init" )]
unsafe public static extern void* mysql_init(void* must_be_null);
[ DllImport( "libmySQL.dll", EntryPoint="mysql_close" )]
unsafe public static extern void mysql_close(void* handle);
// BEGIN ADDITION 2004-07-0 BY Alex Seewald
// Enables us to call mysql_option to activate compression and timeout
[ DllImport( "libmySQL.dll", EntryPoint="mysql_options" )]
unsafe public static extern void mysql_options(void* mysql, uint option, uint *value);
// END ADDITION 2004-07-0 By Alex Seewald
[ DllImport( "libmySQL.dll", EntryPoint="mysql_real_connect" )]
unsafe public static extern void* mysql_real_connect(void* mysql, string host, string user, string passwd, string db, uint port, string unix_socket, int client_flag);
[ DllImport( "libmySQL.dll", EntryPoint="mysql_query" )]
unsafe public static extern int mysql_query(void*mysql, string query);
[ DllImport( "libmySQL.dll", EntryPoint="mysql_store_result" )]
unsafe public static extern void *mysql_store_result(void *mysql);
[ DllImport( "libmySQL.dll", EntryPoint="mysql_free_result" )]
unsafe public static extern void mysql_free_result(void*result);
[ DllImport( "libmySQL.dll", EntryPoint="mysql_errno" )]
unsafe public static extern uint mysql_errno(void*mysql);
[ DllImport( "libmySQL.dll", EntryPoint="mysql_error" )]
unsafe public static extern string mysql_error(void*mysql);
[ DllImport( "libmySQL.dll", EntryPoint="mysql_field_count" )]
unsafe public static extern uint mysql_field_count(void*mysql);
[ DllImport( "libmySQL.dll", EntryPoint="mysql_affected_rows" )]
unsafe public static extern ulong mysql_affected_rows(void*mysql);
[ DllImport( "libmySQL.dll", EntryPoint="mysql_num_fields" )]
unsafe public static extern uint mysql_num_fields(void*result);
[ DllImport( "libmySQL.dll", EntryPoint="mysql_num_rows" )]
unsafe public static extern ulong mysql_num_rows(void *result);
[ DllImport( "libmySQL.dll", EntryPoint="mysql_fetch_field_direct" )]
unsafe public static extern IntPtr mysql_fetch_field_direct(void*result, uint fieldnr);
///<returns>Returns a string that represents the client library version</returns>
[DllImport("libmySQL.dll",CharSet=System.Runtime.InteropServices.CharSet.Ansi,
EntryPoint="mysql_get_client_info", ExactSpelling=true)]
public static extern string GetClientInfo();
[ DllImport( "libmySQL.dll", EntryPoint="mysql_fetch_row" )]
unsafe public static extern IntPtr mysql_fetch_row(void*result);
[ DllImport( "libmySQL.dll", EntryPoint="mysql_selct_db" )]
unsafe public static extern int mysql_selct_db(void*mysql,string dbname);
[ DllImport( "libmySQL.dll", EntryPoint="mysql_fetch_lengths" )]
unsafe public static extern UInt32 *mysql_fetch_lengths(void*result);
}
}
基本上是将C风格的基础数据结构进行.net的重新定义,然后通过InteropServices进行访问。
具体如何利用这个库进行操作,可以参考其中的例子。