四个通用分页存储过程(来源于www.codeproject.com)
1
--SELECT NAME FROM SYSOBJECTS WHERE TYPE = 'U'
2
----显示数据库的所有表的属性值
3
use bajsyy
4
GO
5
6
select
7
( case when a.colorder = 1 then d.name else '' end ) 表名,
8
a.colorder 字段序号,
9
a.name 字段名,
10
( case when COLUMNPROPERTY (a.id,a.name,'isidentity') = 1 then '√' else '' end ) 标识,
11
( case when (
12
select count(*) from sysobjects
13
where name in (
14
select name from sysindexes
15
where (id = a.id ) and ( indid in
16
(select indid from sysindexkeys where
17
( id = a.id ) and ( colid in (
18
select colid from syscolumns
19
where ( id = a.id ) and ( name = a.name ))))))
20
and ( xtype ='PK')) > 0 then '√' else '' end ) 主键,
21
b.name 类型,
22
a.length 字节数,
23
COLUMNPROPERTY ( a.id,a.name ,'PRECISION' ) as 长度,
24
isnull ( COLUMNPROPERTY ( a.id,a.name ,'Scale'),0) as 小数位数,
25
(case when a.isnullable = 1 then '√' else '' end ) 允许空,
26
isnull ( e.text,'') 默认值,
27
isnull (g.[value],'' ) as 字段说明
28
from syscolumns a left join systypes b
29
on a.xtype = b.xusertype
30
inner join sysobjects d
31
on a.id = d.id and d.xtype='U' and d.name <> 'dtproperties'
32
left join syscomments e
33
on a.cdefault = e.id
34
left join sysproperties g
35
on a.id = g.id and a.colid = g.smallid
36
order by a.id ,a.colorder
37
38
39
----------分页代码测试
40
/*
41
----------------------------------------------------
42
spDataPaging 1.0.0.3
43
----------------------------------------------------
44
Autor: Luis Ruiz Arauz Date: 2005/06/12
45
----------------------------------------------------
46
Makes a paged query with the sql parameters to build it
47
and page parameters to filter.
48
Add "No","CurrentPage","TotalPages" coumns to the query
49
to manage paging at user interface.
50
The query Lose the identity column order
51
It works fine for me!
52
----------------------------------------------------
53
Samples:
54
EXEC spDataPaging 'VistaOrders','OrderID,CustomerID','OrderID > 10258','','',15,30
55
EXEC spDataPaging 'VistaOrders','COUNT(OrderID)OrdersCount ,CustomerId','','CustomerID','CustomerID',2,30
56
EXEC spDataPaging 'Customers','*','','','',2,30
57
58
EXEC spDataPaging 'BirthControl','*','',2,30
59
----------------------------------------------------
60
BphyID CardDate Be_Scrutator View_BirthControlList
61
EXEC spDataPaging 'View_BirthControlList','*','',1,20
62
*/
63
IF EXISTS (SELECT name FROM sysobjects
64
WHERE name = 'spDataPaging' AND type = 'P')
65
DROP PROCEDURE spDataPaging
66
GO
67
CREATE PROC spDataPaging
68
@TableOrView VARCHAR(128),
69
@Columns VARCHAR(1000) = '*',
70
@Criteria VARCHAR(3000) = '',
71
@Page INTEGER = 1,
72
@PageSize INTEGER = 30
73
74
AS
75
DECLARE @TableTemp VARCHAR(100),
76
@IdentityName VARCHAR(50),
77
@IdentityType VARCHAR(20),
78
@SQLScript VARCHAR(5000)
79
80
SET NOCOUNT ON
81
82
SET @Columns = REPLACE(@Columns,' ','')
83
84
SET @TableTemp = @TableOrView
85
86
IF(LEN(@TableTemp) != LEN(REPLACE(@TableTemp,'..','')))
87
BEGIN
88
SET @TableTemp = RIGHT(@TableTemp,LEN(@TableTemp) - CHARINDEX('..',@TableTemp) - 1)
89
END
90
91
SELECT @IdentityName = b.name,@IdentityType = c.DATA_TYPE
92
FROM sysobjects a, syscolumns b,Information_Schema.COLUMNS c
93
WHERE a.id = b.id
94
AND a.name = @TableTemp
95
AND c.TABLE_NAME = a.name
96
AND c.COLUMN_NAME = b.name
97
AND c.TABLE_CATALOG = DB_NAME()
98
AND b.status = 128
99
100
SET @TableTemp = '#' + @TableTemp
101
102
IF @IdentityName IS NOT NULL
103
AND ((LEN(@Columns) != LEN(REPLACE(@Columns,@IdentityName,'')))OR @Columns = '*')
104
AND ((LEN(@Columns) = LEN(REPLACE(@Columns,'(' + @IdentityName + ')',''))) OR @Columns = '*')
105
BEGIN
106
SELECT @SQLScript = ' SELECT ' + @Columns + ',CAST(' + @IdentityName + ' AS ' + @IdentityType + ') Num INTO ' + @TableTemp + ' FROM ' + @TableOrView + ' ' + @Criteria +
107
' ALTER TABLE ' + @TableTemp + ' DROP COLUMN ' + @IdentityName +
108
' ALTER TABLE ' + @TableTemp + ' ADD No ' + @IdentityType + ' IDENTITY' +
109
' SELECT * INTO ' + @TableTemp + '2 FROM ' + @TableTemp +
110
' SELECT *,CAST(Num AS ' + @IdentityType + ') ' + @IdentityName + ' INTO ' + @TableTemp + '3 FROM ' + @TableTemp + '2 WHERE (No BETWEEN ' + CAST((@Page * @PageSize - @PageSize + 1) AS VARCHAR(20)) + ' AND ' + CAST((@Page * @PageSize) AS VARCHAR(20)) +
111
112
113
114
115
')' +
116
' ALTER TABLE ' + @TableTemp + '3 DROP COLUMN Num' +
117
' SELECT *,' + CAST(@Page AS VARCHAR(20)) + ' CurrentPage,CEILING(((SELECT COUNT(*) FROM ' + @TableTemp + '2) - 1)/' + CAST(@PageSize AS VARCHAR(20)) + ') + 1 TotalPages FROM ' + @TableTemp + '3'
118
END
119
ELSE
120
BEGIN
121
SELECT @SQLScript = ' SELECT ' + @Columns + ' INTO ' + @TableTemp + ' FROM ' + @TableOrView + ' ' + @Criteria +
122
' ALTER TABLE ' + @TableTemp + ' ADD No INT IDENTITY' +
123
' SELECT * INTO ' + @TableTemp + '2 FROM ' + @TableTemp +
124
' SELECT * INTO ' + @TableTemp + '3 FROM ' + @TableTemp + '2 WHERE (No BETWEEN ' + CAST((@Page * @PageSize - @PageSize + 1) AS VARCHAR(20)) + ' AND ' + CAST((@Page * @PageSize) AS VARCHAR(20)) + ')' +
125
' SELECT *,(SELECT COUNT(*) FROM ' + @TableTemp + '2) TotalRows,' + CAST(@Page AS VARCHAR(20)) + ' CurrentPage,CEILING(((SELECT COUNT(*) FROM ' + @TableTemp + '2) - 1)/' + CAST(@PageSize AS VARCHAR(20)) + ') + 1 TotalPages FROM ' + @TableTemp + '3'
126
END
127
128
--SELECT @SQLScript
129
130
EXEC(@SQLScript)
131
132
133
134
----2-------------------------------------------分页SQL代码2
135
IF EXISTS (SELECT name FROM sysobjects
136
WHERE name = 'SP_Pagination' AND type = 'P')
137
DROP PROCEDURE SP_Pagination
138
GO
139
CREATE PROCEDURE SP_Pagination
140
/**//*
141
***************************************************************
142
** 千万数量级分页存储过程 **
143
***************************************************************
144
参数说明:
145
1.Tables :表名称,视图
146
2.PrimaryKey :主关键字
147
3.Sort :排序语句,不带Order By 比如:NewsID Desc,OrderRows Asc
148
4.CurrentPage :当前页码
149
5.PageSize :分页尺寸
150
6.Filter :过滤语句,不带Where
151
7.Group :Group语句,不带Group By
152
View_BirthControlList
153
154
EXEC SP_Pagination 'View_BirthControlList','证明号','',1,10,'*','',''
155
***************************************************************/
156
(
157
@Tables varchar(2000),
158
@PrimaryKey varchar(500),
159
@Sort varchar(500) = NULL,
160
@CurrentPage int = 1,
161
@PageSize int = 10,
162
@Fields varchar(2000) = '*',
163
@Filter varchar(1000) = NULL,
164
@Group varchar(1000) = NULL
165
)
166
AS
167
/**//*默认排序*/
168
IF @Sort IS NULL OR @Sort = ''
169
SET @Sort = @PrimaryKey
170
DECLARE @SortTable varchar(1000)
171
DECLARE @SortName varchar(1000)
172
DECLARE @strSortColumn varchar(1000)
173
DECLARE @operator char(2)
174
DECLARE @type varchar(1000)
175
DECLARE @prec int
176
/**//*设定排序语句.*/
177
IF CHARINDEX('DESC',@Sort)>0
178
BEGIN
179
SET @strSortColumn = REPLACE(@Sort, 'DESC', '')
180
SET @operator = '<='
181
END
182
ELSE
183
BEGIN
184
IF CHARINDEX('ASC', @Sort) = 0
185
SET @strSortColumn = REPLACE(@Sort, 'ASC', '')
186
SET @operator = '>='
187
END
188
IF CHARINDEX('.', @strSortColumn) > 0
189
BEGIN
190
SET @SortTable = SUBSTRING(@strSortColumn, 0, CHARINDEX('.',@strSortColumn))
191
SET @SortName = SUBSTRING(@strSortColumn, CHARINDEX('.',@strSortColumn) + 1, LEN(@strSortColumn))
192
END
193
ELSE
194
BEGIN
195
SET @SortTable = @Tables
196
SET @SortName = @strSortColumn
197
END
198
SELECT @type=t.name, @prec=c.prec
199
FROM sysobjects o
200
JOIN syscolumns c on o.id=c.id
201
JOIN systypes t on c.xusertype=t.xusertype
202
WHERE o.name = @SortTable AND c.name = @SortName
203
IF CHARINDEX('char', @type) > 0
204
SET @type = @type + '(' + CAST(@prec AS varchar) + ')'
205
DECLARE @strPageSize varchar(500)
206
DECLARE @strStartRow varchar(500)
207
DECLARE @strFilter varchar(1000)
208
DECLARE @strSimpleFilter varchar(1000)
209
DECLARE @strGroup varchar(1000)
210
/**//*默认当前页*/
211
IF @CurrentPage < 1
212
SET @CurrentPage = 1
213
/**//*设置分页参数.*/
214
SET @strPageSize = CAST(@PageSize AS varchar(500))
215
SET @strStartRow = CAST(((@CurrentPage - 1)*@PageSize + 1) AS varchar(500))
216
/**//*筛选以及分组语句.*/
217
IF @Filter IS NOT NULL AND @Filter != ''
218
BEGIN
219
SET @strFilter = ' WHERE ' + @Filter + ' '
220
SET @strSimpleFilter = ' AND ' + @Filter + ' '
221
END
222
ELSE
223
BEGIN
224
SET @strSimpleFilter = ''
225
SET @strFilter = ''
226
END
227
IF @Group IS NOT NULL AND @Group != ''
228
SET @strGroup = ' GROUP BY ' + @Group + ' '
229
ELSE
230
SET @strGroup = ''
231
/**//*执行查询语句*/
232
EXEC(
233
'
234
DECLARE @SortColumn ' + @type + '
235
SET ROWCOUNT ' + @strStartRow + '
236
SELECT @SortColumn=' + @strSortColumn + ' FROM ' + @Tables + @strFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + '
237
SET ROWCOUNT ' + @strPageSize + '
238
SELECT ' + @Fields + ' FROM ' + @Tables + ' WHERE ' + @strSortColumn + @operator + ' @SortColumn ' + @strSimpleFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + '
239
'
240
)
241
242
243
244
-------------------------3分页
245
246
CREATE PROCEDURE dbo.up_GetSortedSalesOrdersByPageUsingRowset
247
@orderedOnStart datetime,
248
@orderedOnEnd datetime,
249
@pageNumber int,
250
@pageSize int,
251
@sortExpression varchar(100),
252
@sortOrder varchar(4),
253
@virtualCount int OUTPUT
254
AS
255
256
/*
257
Make sure that the page number is at least 1
258
*/
259
IF @pageNumber < 1
260
BEGIN
261
SET @pageNumber = 1
262
END
263
264
SELECT
265
@virtualCount = COUNT(*)
266
FROM
267
Sales.SalesOrderHeader Header
268
WHERE
269
Header.[OrderDate] >= @orderedOnStart
270
AND Header.[OrderDate] < @orderedOnEnd
271
272
DECLARE @lastKeyValue numeric(18,0)
273
DECLARE @lastAscendingSortValue SQL_Variant
274
DECLARE @lastDescendingSortValue SQL_Variant
275
276
DECLARE @numberToIgnore int
277
278
SET @numberToIgnore = (@pageNumber-1) * @pageSize
279
280
IF @numberToIgnore > 0
281
BEGIN
282
/*
283
Get the last available sort data and unique key
284
value from the last page.
285
*/
286
SET ROWCOUNT @numberToIgnore
287
288
SELECT
289
@lastKeyValue = [UniqueValue],
290
@lastAscendingSortValue = [AscendingSort],
291
@lastDescendingSortValue = [DescendingSort]
292
FROM
293
(
294
SELECT
295
Header.[SalesOrderID] AS [UniqueValue],
296
CASE
297
WHEN
298
UPPER(@sortOrder) = 'DESC'
299
AND UPPER(@sortExpression) = 'CUSTOMERID'
300
THEN
301
CONVERT(SQL_Variant, [CustomerID])
302
WHEN
303
UPPER(@sortOrder) = 'DESC'
304
AND UPPER(@sortExpression) = 'TOTALDUE'
305
THEN
306
CONVERT(SQL_Variant, [TotalDue])
307
WHEN
308
UPPER(@sortOrder) = 'DESC'
309
AND UPPER(@sortExpression) = 'ORDERDATE'
310
THEN
311
CONVERT(SQL_Variant, [OrderDate])
312
ELSE
313
NULL
314
END AS [DescendingSort],
315
CASE
316
WHEN
317
UPPER(@sortOrder) = 'ASC'
318
AND UPPER(@sortExpression) = 'CUSTOMERID'
319
THEN
320
CONVERT(SQL_Variant, [CustomerID])
321
WHEN
322
UPPER(@sortOrder) = 'ASC'
323
AND UPPER(@sortExpression) = 'TOTALDUE'
324
THEN
325
CONVERT(SQL_Variant, [TotalDue])
326
WHEN
327
UPPER(@sortOrder) = 'ASC'
328
AND UPPER(@sortExpression) = 'ORDERDATE'
329
THEN
330
CONVERT(SQL_Variant, [OrderDate])
331
ELSE
332
NULL
333
END AS [AscendingSort]
334
FROM
335
Sales.SalesOrderHeader Header
336
WHERE
337
Header.[OrderDate] >= @orderedOnStart
338
AND Header.[OrderDate] < @orderedOnEnd
339
) AS Derived
340
ORDER BY
341
[AscendingSort] ASC,
342
[DescendingSort] DESC,
343
[UniqueValue] ASC
344
END
345
346
/*
347
Select the first @pageSize records that come after the last sort
348
data/unique value from the last page. If this is the first page,
349
just get the first @pageSize records.
350
*/
351
352
SET ROWCOUNT @pageSize
353
354
SELECT
355
[SalesOrderID],
356
[OrderDate],
357
[TotalDue],
358
[CustomerID]
359
FROM
360
(
361
SELECT
362
[SalesOrderID],
363
[OrderDate],
364
[TotalDue],
365
[CustomerID],
366
[SalesOrderID] As [UniqueValue],
367
CASE
368
WHEN
369
UPPER(@sortOrder) = 'DESC'
370
AND UPPER(@sortExpression) = 'CUSTOMERID'
371
THEN
372
CONVERT(SQL_Variant, [CustomerID])
373
WHEN
374
UPPER(@sortOrder) = 'DESC'
375
AND UPPER(@sortExpression) = 'TOTALDUE'
376
THEN
377
CONVERT(SQL_Variant, [TotalDue])
378
WHEN
379
UPPER(@sortOrder) = 'DESC'
380
AND UPPER(@sortExpression) = 'ORDERDATE'
381
THEN
382
CONVERT(SQL_Variant, [OrderDate])
383
ELSE
384
NULL
385
END AS [DescendingSort],
386
CASE
387
WHEN
388
UPPER(@sortOrder) = 'ASC'
389
AND UPPER(@sortExpression) = 'CUSTOMERID'
390
THEN
391
CONVERT(SQL_Variant, [CustomerID])
392
WHEN
393
UPPER(@sortOrder) = 'ASC'
394
AND UPPER(@sortExpression) = 'TOTALDUE'
395
THEN
396
CONVERT(SQL_Variant, [TotalDue])
397
WHEN
398
UPPER(@sortOrder) = 'ASC'
399
AND UPPER(@sortExpression) = 'ORDERDATE'
400
THEN
401
CONVERT(SQL_Variant, [OrderDate])
402
ELSE
403
NULL
404
END AS [AscendingSort]
405
FROM
406
Sales.SalesOrderHeader Header
407
WHERE
408
Header.[OrderDate] >= @orderedOnStart
409
AND Header.[OrderDate] < @orderedOnEnd
410
) Derived
411
WHERE
412
(
413
@lastAscendingSortValue IS NULL
414
AND @lastDescendingSortValue IS NULL
415
AND @lastKeyValue IS NULL
416
)
417
OR
418
(
419
(@lastAscendingSortValue IS NOT NULL)
420
AND
421
(
422
([AscendingSort] > @lastAscendingSortValue)
423
OR
424
(
425
[AscendingSort] = @lastAscendingSortValue
426
AND [UniqueValue] > @lastKeyValue
427
)
428
)
429
)
430
OR
431
(
432
(@lastDescendingSortValue IS NOT NULL)
433
AND
434
(
435
([DescendingSort] < @lastDescendingSortValue)
436
OR
437
(
438
[DescendingSort] = @lastDescendingSortValue
439
AND [UniqueValue] > @lastKeyValue
440
)
441
)
442
)
443
ORDER BY
444
[AscendingSort] ASC,
445
[DescendingSort] DESC,
446
[SalesOrderID] ASC
447
448
SET ROWCOUNT 0
449
GO
450
451
452
-------------4分页
453
454
SET QUOTED_IDENTIFIER ON
455
GO
456
SET ANSI_NULLS ON
457
GO
458
459
ALTER PROCEDURE sp_Easypaging
460
461
(
462
463
@Tables varchar(1000),
464
@PK varchar(100),
465
@JoinStatements varchar(1000)='',
466
@Fields varchar(5000) = '*',
467
@Filter varchar(5000) = NULL,
468
@Sort varchar(200) = NULL,
469
@PageNumber int = 1,
470
@PageSize int = 10,
471
@TotalRec int =0 Output,
472
@Group varchar(1000) = NULL
473
474
475
)
476
477
AS
478
479
480
481
/*
482
Created by Kashif Akram
483
Email Muhammad_kashif@msn.com
484
485
The publication rights are reserved
486
You can use this procedure with out removing these comments
487
*/
488
489
490
491
DECLARE @strPageSize varchar(50)
492
DECLARE @strStartRow varchar(50)
493
494
495
SET @strPageSize = CAST(@PageSize AS varchar(50))
496
SET @strStartRow = CAST(((@PageNumber - 1)*@PageSize + 1) AS varchar(50))
497
498
499
500
--set @PK =' tbl_Items.ItemID '
501
502
create table #PageTable (PID bigint primary key IDENTITY (1, 1) , UID int)
503
create table #PageIndex (UID int)
504
505
/*
506
CREATE UNIQUE CLUSTERED
507
INDEX [PK_tbl_PageTable] ON #PageTable (PID)
508
*/
509
CREATE
510
INDEX [PK_tbl_PageIndex] ON #PageIndex (UID)
511
512
513
--'SELECT ' + @Fields + ' FROM ' + @Tables + '' + @JoinStatements +' WHERE ' + @strSortColumn + @operator + ' @SortColumn ' + @strSimpleFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + ' DESC '
514
exec ('
515
516
set rowcount 0
517
518
insert into #pageTable(UID)
519
SELECT ' + @PK + ' FROM ' + @Tables + ' ' + @JoinStatements +' WHERE ' + @Filter + ' ' + @Group + ' ORDER BY ' + @Sort + '
520
521
522
DECLARE @SortColumn int
523
524
SET ROWCOUNT '+ @strStartRow +'
525
526
select @SortColumn=PID from #PageTable --option (keep plan)
527
528
print @SortColumn
529
530
SET ROWCOUNT '+ @strPageSize +'
531
532
insert into #pageIndex
533
select UID from #PageTable where PID >= @SortColumn -- option (keep plan)
534
535
536
537
SELECT ' + @Fields + ' FROM ' + @Tables + ' ' + @JoinStatements +' WHERE ' + @Filter + ' and '+ @PK + ' in (Select UID from #pageIndex)' + @Group + ' ORDER BY ' + @Sort + ' '
538
539
)
540
541
542
543
select @TotalRec=count(*) from #pageTable
544
545
546
547
548
549
drop table #PageTable
550
drop table #PageIndex
551
552
553
554
RETURN
555
556
GO
557
SET QUOTED_IDENTIFIER OFF
558
GO
559
SET ANSI_NULLS ON
560
GO

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299

300

301

302

303

304

305

306

307

308

309

310

311

312

313

314

315

316

317

318

319

320

321

322

323

324

325

326

327

328

329

330

331

332

333

334

335

336

337

338

339

340

341

342

343

344

345

346

347

348

349

350

351

352

353

354

355

356

357

358

359

360

361

362

363

364

365

366

367

368

369

370

371

372

373

374

375

376

377

378

379

380

381

382

383

384

385

386

387

388

389

390

391

392

393

394

395

396

397

398

399

400

401

402

403

404

405

406

407

408

409

410

411

412

413

414

415

416

417

418

419

420

421

422

423

424

425

426

427

428

429

430

431

432

433

434

435

436

437

438

439

440

441

442

443

444

445

446

447

448

449

450

451

452

453

454

455

456

457

458

459

460

461

462

463

464

465

466

467

468

469

470

471

472

473

474

475

476

477

478

479

480

481

482

483

484

485

486

487

488

489

490

491

492

493

494

495

496

497

498

499

500

501

502

503

504

505

506

507

508

509

510

511

512

513

514

515

516

517

518

519

520

521

522

523

524

525

526

527

528

529

530

531

532

533

534

535

536

537

538

539

540

541

542

543

544

545

546

547

548

549

550

551

552

553

554

555

556

557

558

559

560

哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!