1
// DataReader的详细用法
2
cmd.CommandText = " GetInfo " ;
3
cmd.CommandType = CommandType.StoredProcedure;
4
SqlParameter param = cmd.Parameters.Add( " @Fid " , 16 );
5
param = cmd.Parameters.Add( " @Fname " ,SqlDbType.VarChar, 8 );
6
param.Direction = ParameterDirection.Output;
7
param = cmd.Parameters.Add( " @Fphone " ,SqlDbType.VarChar, 8 );
8
param.Direction = ParameterDirection.Output;
9
conn.Open();
10
cmd.ExecuteNonQuery();
11
string Fname = cmd.Parameters[ " @Fname " ].Value.ToString();
12
string Fphone = cmd.Parameters[ " @Fphone " ].Value.ToString();
13
Console.WriteLine(Fname + " " + Fphone);
14
conn.Close();
15
showSplit();
16
}
17
18
// **************************************
19
// *演示读取多个无关记录集
20
// **************************************
21
public void multiResult()
22
{
23
SqlCommand cmd;
24
cmd = conn.CreateCommand();
25
string sqla = " select Fname from friend " ;
26
string sqlb = " select Fphone from friend " ;
27
cmd.CommandText = sqla + " ; " + sqlb;
28
conn.Open();
29
SqlDataReader reader = cmd.ExecuteReader();
30
int i = 1 ;
31
do
32
{
33
Console.WriteLine( " 第 " + i.ToString() + " 个记录集内容如下:/n " );
34
while (reader.Read())
35
{
36
Console.WriteLine(reader[ 0 ].ToString() + " /t " );
37
}
38
i ++ ;
39
} while (reader.NextResult()); // NextResult()移动到下一个记录集
40
reader.Close();
41
conn.Close();
42
showSplit();
43
}
44
45
// **************************************
46
// *使用DataReader获得数据库模式信息
47
// **************************************
48
public void getSchema()
49
{
50
SqlCommand cmd;
51
cmd = conn.CreateCommand();
52
string sql = " select Fid,Fname,Fphone from friend " ;
53
cmd.CommandText = sql;
54
conn.Open();
55
SqlDataReader reader = cmd.ExecuteReader();
56
DataTable SchemaTable = reader.GetSchemaTable();
57
58
DataRowCollection SchemaColumns = SchemaTable.Rows;
59
DataColumnCollection SchemaProps = SchemaTable.Columns;
60
foreach (DataRow SchemaColumn in SchemaColumns)
61
{
62
foreach (DataColumn SchemaColumnProp in SchemaProps)
63
{
64
Console.WriteLine(SchemaColumnProp.ColumnName + " = " + SchemaColumn[SchemaColumnProp.ColumnName].ToString());
65
}
66
}
67
reader.Close();
68
conn.Close();
69
showSplit();
70
}
71
72
// **************************************
73
// *从数据库读取二进制数据的代码段
74
// *该代码段只是读取二进制的片断,不是
75
// *整个程序,所以不能执行,你可以把它
76
// *集成到你的WinForm项目里面。
77
// **************************************
78
public void getBinary()
79
{
80
/*
81
System.IO.MemoryStream stream = new System.IO.MemoryStream();
82
System.IO.BinaryWriter writer = new System.IO.BinaryWriter(stream);
83
int BufferSize = 1024;
84
byte[] Buffer = new Byte[BufferSize];
85
long Offset = 0;
86
long BytesRead = 0;
87
do
88
{
89
BytesRead = reader.GetBytes(2,Offset,Buffer,0,BufferSize);
90
writer.Writer(Buffer,0,(int)BytesRead);
91
writer.Flush();
92
Offset += BytesRead;
93
}
94
while(BytesRead == BufferSize);
95
*/
96
}
97
98
// 添加输出分隔
99
private void showSplit()
100
{
101
Console.WriteLine( " /n********************************************************************/n " );
102
}
103
104
public static void Main( string [] args)
105
{
106
SqlReader sqlreader = new SqlReader();
107
108
sqlreader.basicReader();
109
110
sqlreader.hasParamReader();
111
112
sqlreader.hasOledbParamReader();
113
114
sqlreader.outParamShow();
115
116
sqlreader.multiResult();
117
118
sqlreader.getSchema();
119
}
120
}

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
