Skip to content

Commit 324195f

Browse files
author
work
committed
添加搜索某个QQ加了那些群方法
Signed-off-by: work <[email protected]>
1 parent ff144ae commit 324195f

File tree

1 file changed

+141
-11
lines changed

1 file changed

+141
-11
lines changed

search.go

Lines changed: 141 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,29 +11,62 @@ import (
1111
)
1212

1313
var QunNum *int = flag.Int("q", 0, "please input a QunNum like 69699987")
14+
var QQNum *int = flag.Int("i", 0, "please input a QQNum like 43546936")
1415

1516
func main() {
1617
flag.Usage = show_usage
1718
flag.Parse()
1819

19-
if *QunNum == 0 {
20+
if *QunNum == 0 && *QQNum == 0 {
2021
show_usage()
2122
return
2223
}
24+
//fmt.Println(*QunNum)
25+
//fmt.Println(*QQNum)
26+
//return
27+
if *QunNum != 0 {
28+
dbName, tableName := getDbAndTable(*QunNum)
2329

24-
dbName, tableName := getDbAndTable(*QunNum)
30+
conn, err := db(dbName)
2531

26-
conn, err := db(dbName)
32+
if err != nil {
33+
fmt.Println("Connecting Error")
34+
return
35+
}
2736

28-
if err != nil {
29-
fmt.Println("Connecting Error")
30-
return
37+
queryQunNum(conn, tableName, *QunNum)
38+
fmt.Printf("%s\n", "finish")
39+
conn.Close()
3140
}
3241

33-
queryQunNum(conn, tableName, *QunNum)
34-
35-
fmt.Printf("%s\n", "finish")
36-
conn.Close()
42+
if *QQNum != 0 {
43+
conn, _ := db("GroupData1")
44+
dbNames := getAllDataBase(conn)
45+
46+
for _, dbName := range dbNames {
47+
if dbName == "" {
48+
continue
49+
}
50+
fmt.Println("searching database: " + dbName)
51+
conn, err := db(dbName)
52+
53+
if err != nil {
54+
fmt.Println("Connecting Error")
55+
return
56+
}
57+
58+
names := getTableNames(conn)
59+
60+
for _, tableName := range names {
61+
if tableName != "" && tableName != "dtproperties" {
62+
fmt.Println("searching table: " + tableName)
63+
queryQQNum(conn, tableName, *QQNum)
64+
}
65+
}
66+
}
67+
fmt.Printf("%s\n", "finish")
68+
conn.Close()
69+
}
3770

3871
return
3972
}
@@ -45,6 +78,49 @@ func db(dbName string) (*sql.DB, error) {
4578
return sql.Open("odbc", "driver={sql server};server=localhost;port=1433;uid=sa;pwd=liuawen99;database="+dbName)
4679
}
4780

81+
/**
82+
* 查询某个QQ加了那些群
83+
*/
84+
func queryQQNum(conn *sql.DB, tableName string, QQNum int) {
85+
rows, err := conn.Query("select * from " + tableName + " where QQNum=" + strconv.Itoa(QQNum))
86+
if err != nil {
87+
fmt.Println("Query Error", err)
88+
return
89+
}
90+
defer rows.Close()
91+
92+
var (
93+
id int
94+
qq int
95+
nick string
96+
age int
97+
gender int
98+
auth int
99+
qun int
100+
)
101+
102+
for rows.Next() {
103+
if err := rows.Scan(&id, &qq, &nick, &age, &gender, &auth, &qun); err == nil {
104+
fmt.Print(id)
105+
fmt.Print("\t")
106+
fmt.Print(qq)
107+
fmt.Print("\t")
108+
fmt.Print(nick)
109+
fmt.Print("\t")
110+
fmt.Print(age)
111+
fmt.Print("\t")
112+
fmt.Print(gender)
113+
fmt.Print("\t")
114+
fmt.Print(auth)
115+
fmt.Print("\t")
116+
fmt.Print(qun)
117+
fmt.Print("\t\r\n")
118+
}
119+
}
120+
121+
return
122+
}
123+
48124
/**
49125
* 查询某个QQ群的成员
50126
*/
@@ -111,9 +187,63 @@ func getDbAndTable(QunNum int) (string, string) {
111187
return dbName, tableName
112188
}
113189

190+
/**
191+
* 获取所有数据库的名字
192+
*/
193+
func getAllDataBase(conn *sql.DB) []string {
194+
names := make([]string, 12) //不能用切片,你实际上是想返回100个元素的数组,但是最后会返回200个元素,其中100个元素为空。
195+
stmt, err := conn.Prepare("select name from sys.databases where name like 'GroupData%'")
196+
if err != nil {
197+
fmt.Println("Query Error", err)
198+
return names
199+
}
200+
defer stmt.Close()
201+
row, err := stmt.Query()
202+
if err != nil {
203+
fmt.Println("Query Error", err)
204+
return names
205+
}
206+
defer row.Close()
207+
for row.Next() {
208+
var name string
209+
if err := row.Scan(&name); err == nil {
210+
//fmt.Println(name)
211+
names = append(names, name)
212+
}
213+
}
214+
return names
215+
}
216+
217+
/**
218+
* 获取数据库所有的表
219+
*/
220+
func getTableNames(conn *sql.DB) []string {
221+
names := make([]string, 101) //不能用切片,你实际上是想返回100个元素的数组,但是最后会返回200个元素,其中100个元素为空。
222+
stmt, err := conn.Prepare("select name from sys.objects where type='U'")
223+
if err != nil {
224+
fmt.Println("Query Error", err)
225+
return names
226+
}
227+
defer stmt.Close()
228+
row, err := stmt.Query()
229+
if err != nil {
230+
fmt.Println("Query Error", err)
231+
return names
232+
}
233+
defer row.Close()
234+
for row.Next() {
235+
var name string
236+
if err := row.Scan(&name); err == nil {
237+
//fmt.Println(name)
238+
names = append(names, name)
239+
}
240+
}
241+
return names
242+
}
243+
114244
func show_usage() {
115245
fmt.Fprintf(os.Stderr,
116-
"Usage: %s [-q=<QunNum>]\n"+
246+
"Usage: %s [-q=<QunNum>]\n"+" [-i=<QQNum>]\n"+
117247
" <command> [<args>]\n\n",
118248
os.Args[0])
119249
fmt.Fprintf(os.Stderr,

0 commit comments

Comments
 (0)