|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
因此,我们的第一个“米”,就是二进制日志binlog必须是rowbased的。在rowbase下,二进制日志binlog同时记录了更新前后的整行记录。server|sqlserver|数据|数据库在.NetFrameWork中,可以很便利挪用COM组件,有些时分我们必要取得运转在某个SqlServer上得服务虚例列表和在一个实例上得数据库列表,经由过程Microsoft.SQLDMO.Object组件就能够轻松完成此项事情:
起首怎样找到Microsoft.SQLDMO.Object
1.怎样在您得项目中可以利用SQLDMO组件?
菜单-项目-增加援用-COM-Microsoft.SQLDMO.Object
2.将该功效写成一个类:
1usingSystem;
2usingSystem.Collections;
3usingSystem.Collections.Specialized;
4
5namespaceJillZhang
6{
7/**////<summary>
8///SummarydescriptionforSqlInfo.
9///</summary>
10publicclassSqlInfo
11{
12成员变量#region成员变量
13privatestring_uid="";
14privatestring_pwd="";
15privateStringCollection_serverList=newStringCollection();
16privateHashtable_databaseList=newHashtable();
17#endregion
18
19机关函数#region机关函数
20publicSqlInfo()
21{
22this._serverList=GetSqlInstances();
23if(this._serverList.Count>0)
24{
25foreach(stringiteminthis._serverList)
26{
27this._databaseList.Add(item,this.GetAllDatabases(item));
28}
29}
30}
31publicSqlInfo(stringuid,stringpwd)
32{
33this._uid=uid;
34this._pwd=pwd;
35this._serverList=GetSqlInstances();
36if(this._serverList.Count>0)
37{
38foreach(stringiteminthis._serverList)
39{
40this._databaseList.Add(item,this.GetAllDatabases(item));
41}
42}
43}
44#endregion
45
46大众属性#region大众属性
47/**////<summary>
48///服务列表
49///</summary>
50publicStringCollectionServerList
51{
52get
53{
54return_serverList;
55}
56}
57/**////<summary>
58///用于登录Sqlserver得用户名
59///</summary>
60publicstringUid
61{
62get
63{
64return_uid;
65}
66set
67{
68_uid=value;
69}
70}
71/**////<summary>
72///用于登录得暗码
73///</summary>
74publicstringPwd
75{
76get
77{
78return_pwd;
79}
80set
81{
82_pwd=value;
83}
84}
85#endregion
86
87事务办法#region事务办法
88/**////<summary>
89///取得服务列表
90///</summary>
91///<returns></returns>
92publicstaticSystem.Collections.Specialized.StringCollectionGetSqlInstances()
93{
94//声明一个字符串链表,用于寄存列表信息
95System.Collections.Specialized.StringCollectioninstaces=newSystem.Collections.Specialized.StringCollection();
96try
97{
98//以下代码是经由过程挪用SQLDMO组件来完成取得服务列表
99SQLDMO.ApplicationsqlApplication=newSQLDMO.ApplicationClass();
100SQLDMO.NameListsqlServerIntances=sqlApplication.ListAvailableSQLServers();
101for(inti=0;i<sqlServerIntances.Count;i++)
102{
103objectsvr=sqlServerIntances.Item(i+1);//索引从1入手下手
104if(svr!=null)
105{
106instaces.Add(svr.ToString());
107}
108}
109returninstaces;
110}
111catch
112{
113thrownewException("未能取得Server得列表信息,请检察您得Sqlserver是不是正在运转!");
114}
115}
116
117/**////<summary>
118///取得Sqlserver2000一个ServerInstance上得数据库列表
119///</summary>
120///<paramname="server">服务称号</param>
121///<paramname="uid">登任命户</param>
122///<paramname="pwd">登录暗码</param>
123///<returns>数据库列表</returns>
124publicstaticSystem.Collections.Specialized.StringCollectionGetAllDatabases(stringserver,stringuid,stringpwd)
125{
126System.Collections.Specialized.StringCollectiondatabases=newSystem.Collections.Specialized.StringCollection();
127try
128{
129SQLDMO.SQLServersqlServer=newSQLDMO.SQLServerClass();
130sqlServer.Connect(server,uid,pwd);
131foreach(SQLDMO.DatabasedbinsqlServer.Databases)
132{
133if(db.Name!=null)
134{
135databases.Add(db.Name);
136}
137}
138returndatabases;
139}
140catch
141{
142thrownewException("未能取得服务"+server+"上得数据库列表,大概您得服务器没有启动大概您得用户名或暗码毛病");
143}
144}
145publicSystem.Collections.Specialized.StringCollectionGetAllDatabases(stringserver)
146{
147returnGetAllDatabases(server,this._uid,this._pwd);
148}
149#endregion
150
151}
152}
153
mysql使用内部操作字符集gbk来进行操作,即执行"SELECT*FROMtestWHEREname=xxxor1=1/*LIMIT1";从而注入成功 |
|