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
