入门者使用……高手绕行
C#操作Access数据库的基础知识
通过ADO.NET的OleDb相关类来操作Access
主要知识点如下:
1
2
3
|
using
System
.
Data
.
OleDb
;
using
System
.
Data
;
|
连接字符串:
1
|
String
connectionString
=
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=product.mdb"
;
|
建立连接:
1
|
OleDbConnection
connection
=
new
OleDbConnection
(
connectionString
)
;
|
使用OleDbCommand类来执行Sql语句:
1
2
3
|
OleDbCommand
cmd
=
new
OleDbCommand
(
sql
,
connection
)
;
connection
.
Open
(
)
;
cmd
.
ExecuteNonQuery
(
)
;
|
C#操作Access数据库的基础知识2.
取得Access自增标识字段在插入数据后的id值
1
2
3
|
cmd
.
CommandText
=
@"select @@identity"
;
int
value
=
Int32
.
Parse
(
cmd
.
ExecuteScalar
(
)
.
ToString
(
)
)
;
return
value
;
|
C#操作Access数据库的基础知识3.
执行事务
需要用到OleDbTransaction,关键语句如下:
1
2
3
4
5
6
7
8
9
10
11
12
|
OleDbConnection
connection
=
new
OleDbConnection
(
connectionString
)
;
OleDbCommand
cmd
=
new
OleDbCommand
(
)
;
OleDbTransaction
transaction
=
null
;
cmd
.
Connection
=
connection
;
connection
.
Open
(
)
;
transaction
=
connection
.
BeginTransaction
(
)
;
cmd
.
Transaction
=
transaction
;
cmd
.
CommandText
=
sql1
;
cmd
.
ExecuteNonQuery
(
)
;
cmd
.
CommandText
=
sql2
;
cmd
.
ExecuteNonQuery
(
)
;
transaction
.
Commit
(
)
;
|
C#操作Access数据库的基础知识4.
执行查询,返回DataSet
1
2
3
4
5
6
7
|
OleDbConnection
connection
=
new
OleDbConnection
(
connectionString
)
;
DataSet
ds
=
new
DataSet
(
)
;
connection
.
Open
(
)
;
OleDbDataAdapter
da
=
new
OleDbDataAdapter
(
sql
,
connection
)
;
da
.
Fill
(
ds
,
"ds"
)
;
|
分页查询
分页查询使用OleDbDataReader来读取数据,并将结果写到一个DataSet中返回。
以上内容封装为三个可重用的类:AccessDBUtil,AccessPageUtil,Page
C#操作Access之创建mdb库浅析
C#操作Access之创建mdb库是如何实现的呢?首先我们来看看基本的知识:本文C#操作Access数据库的基础知识,并提供一个相关的实例。C#的ADO.NET还不能通过编程方式创建全新的ACCESS(MDB)数据库,所以还只能使用ADOX这个来自COM的链接库来操作。
C#操作Access主要知识点如下:
1
2
3
|
using
System
.
Data
.
OleDb
;
using
System
.
Data
;
|
C#操作Access连接字符串:
1
|
String
connectionString
=
"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=product.mdb"
;
|
C#操作Access建立连接:
1
|
OleDbConnection
connection
=
new
OleDbConnection
(
connectionString
)
;
|
C#操作Access使用OleDbCommand类来执行Sql语句:
1
2
3
4
5
|
OleDbCommand
cmd
=
new
OleDbCommand
(
sql
,
connection
)
;
connection
.
Open
(
)
;
cmd
.
ExecuteNonQuery
(
)
;
|
C#操作Access之创建mdb库,例程如下:
需要注意的是:参数mdbPath是mdb的完整路径(不包含表的名称)。
C#操作Access之创建mdb库实例:D:\test.mdb
1
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
|
//创建mdb
public
static
bool
CreateMDBDataBase
(
string
mdbPath
)
{
try
{
ADOX
.
CatalogClass
cat
=
new
ADOX
.
CatalogClass
(
)
;
cat
.
Create
(
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+
mdbPath
+
";"
)
;
cat
=
null
;
return
true
;
}
//C#操作Access之创建mdb库
catch
{
return
false
;
}
}
|
C#操作Access之创建mdb库的基本内容就向你介绍到这里,希望对你了解和学习C#操作Access之创建mdb库有所帮助。
C#操作Access之创建表浅析
C#操作Access之创建表是如何实现的呢?首先我们来看看基本的知识:本文C#操作Access数据库的基础知识,并提供一个相关的实例。C#的ADO.NET还不能通过编程方式创建全新的ACCESS(MDB)数据库,所以还只能使用ADOX这个来自COM的链接库来操作。
C#操作Access主要知识点如下:
1
2
3
|
using
System
.
Data
.
OleDb
;
using
System
.
Data
;
|
C#操作Access连接字符串:
1
|
String
connectionString
=
"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=product.mdb"
;
|
C#操作Access建立连接:
1
|
OleDbConnection
connection
=
new
OleDbConnection
(
connectionString
)
;
|
C#操作Access使用OleDbCommand类来执行Sql语句:
1
2
3
4
5
|
OleDbCommand
cmd
=
new
OleDbCommand
(
sql
,
connection
)
;
connection
.
Open
(
)
;
cmd
.
ExecuteNonQuery
(
)
;
|
C#操作Access之创建表,例程如下:
通常一个mdb的可以包含n个表。下面的程序主要是创建一个table。
1
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
|
//新建mdb的表,C#操作Access之创建表
//mdbHead是一个ArrayList,存储的是table表中的具体列名。
public
static
bool
CreateMDBTable
(
string
mdbPath
,
string
tableName
,
ArrayList
mdbHead
)
{
try
{
ADOX
.
CatalogClass
cat
=
new
ADOX
.
CatalogClass
(
)
;
string
sAccessConnection
=
@
"Provider=Microsoft.Jet.OLEDB.4.0;
Data Source="
+
mdbPath
;
ADODB
.
Connection
cn
=
new
ADODB
.
Connection
(
)
;
cn
.
Open
(
sAccessConnection
,
null
,
null
,
-
1
)
;
cat
.
ActiveConnection
=
cn
;
//新建一个表,C#操作Access之创建表
ADOX
.
TableClass
tbl
=
new
ADOX
.
TableClass
(
)
;
tbl
.
ParentCatalog
=
cat
;
tbl
.
Name
=
tableName
;
int
size
=
mdbHead
.
Count
;
for
(
int
i
=
0
;
i
<
size
;
i
++
)
{
//增加一个文本字段
ADOX
.
ColumnClass
col2
=
new
ADOX
.
ColumnClass
(
)
;
col2
.
ParentCatalog
=
cat
;
col2
.
Name
=
mdbHead
[
i
]
.
ToString
(
)
;
//列的名称
col2
.
Properties
[
"Jet OLEDB:Allow Zero Length"
]
.
Value
=
false
;
tbl
.
Columns
.
Append
(
col2
,
ADOX
.
DataTypeEnum
.
adVarWChar
,
500
)
;
}
cat
.
Tables
.
Append
(
tbl
)
;
//这句把表加入数据库(非常重要) ,C#操作Access之创建表
tbl
=
null
;
cat
=
null
;
cn
.
Close
(
)
;
return
true
;
}
catch
{
return
false
;
}
}
|
C#操作Access之创建表的基本内容就向你介绍到这里,希望对你了解和学习C#操作Access之创建表有所帮助。
C#操作Access之读取mdb浅析
C#操作Access之读取mdb是如何实现的呢?首先我们来看看基本的知识:本文C#操作Access数据库的基础知识,并提供一个相关的实例。C#的ADO.NET还不能通过编程方式创建全新的ACCESS(MDB)数据库,所以还只能使用ADOX这个来自COM的链接库来操作。
C#操作Access主要知识点如下:
1
2
3
|
using
System
.
Data
.
OleDb
;
using
System
.
Data
;
|
C#操作Access连接字符串:
1
|
String
connectionString
=
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=product.mdb"
;
|
C#操作Access建立连接:
1
|
OleDbConnection
connection
=
new
OleDbConnection
(
connectionString
)
;
|
C#操作Access使用OleDbCommand类来执行Sql语句:
1
2
3
4
5
|
OleDbCommand
cmd
=
new
OleDbCommand
(
sql
,
connection
)
;
connection
.
Open
(
)
;
cmd
.
ExecuteNonQuery
(
)
;
|
C#操作Access之读取mdb实例如下:
本例返回的是一个DataTable,如需其他格式可以自行转换。
1
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
|
// 读取mdb数据
public
static
DataTable
ReadAllData
(
string
tableName
,
string
mdbPath
,
ref
bool
success
)
{
DataTable
dt
=
new
DataTable
(
)
;
try
{
DataRow
dr
;
//1、建立连接 C#操作Access之读取mdb
string
strConn
=
@
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+
mdbPath
+
";Jet OLEDB:Database Password=haoren"
;
OleDbConnection
odcConnection
=
new
OleDbConnection
(
strConn
)
;
//2、打开连接 C#操作Access之读取mdb
odcConnection
.
Open
(
)
;
//建立SQL查询
OleDbCommand
odCommand
=
odcConnection
.
CreateCommand
(
)
;
//3、输入查询语句 C#操作Access之读取mdb
odCommand
.
CommandText
=
"select * from "
+
tableName
;
//建立读取
OleDbDataReader
odrReader
=
odCommand
.
ExecuteReader
(
)
;
//查询并显示数据
int
size
=
odrReader
.
FieldCount
;
for
(
int
i
=
0
;
i
<
size
;
i
++
)
{
DataColumn
dc
;
dc
=
new
DataColumn
(
odrReader
.
GetName
(
i
)
)
;
dt
.
Columns
.
Add
(
dc
)
;
}
while
(
odrReader
.
Read
(
)
)
{
dr
=
dt
.
NewRow
(
)
;
for
(
int
i
=
0
;
i
<
size
;
i
++
)
{
dr
[
odrReader
.
GetName
(
i
)
]
=
odrReader
[
odrReader
.
GetName
(
i
)
]
.
ToString
(
)
;
}
dt
.
Rows
.
Add
(
dr
)
;
}
//关闭连接 C#操作Access之读取mdb
odrReader
.
Close
(
)
;
odcConnection
.
Close
(
)
;
success
=
true
;
return
dt
;
}
catch
{
success
=
false
;
return
dt
;
}
}
|
C#操作Access之读取mdb的基本内容就向你介绍到这里,希望对你了解和学习C#操作Access之读取mdb有所帮助。
C#操作Access之按列读取mdb浅析
C#操作Access之按列读取mdb是如何实现的呢?首先我们来看看基本的知识:本文C#操作Access数据库的基础知识,并提供一个相关的实例。C#的ADO.NET还不能通过编程方式创建全新的ACCESS(MDB)数据库,所以还只能使用ADOX这个来自COM的链接库来操作。
C#操作Access主要知识点如下:
1
2
3
|
using
System
.
Data
.
OleDb
;
using
System
.
Data
;
|
C#操作Access连接字符串:
1
|
String
connectionString
=
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=product.mdb"
;
|
C#操作Access建立连接:
1
|
OleDbConnection
connection
=
new
OleDbConnection
(
connectionString
)
;
|
C#操作Access使用OleDbCommand类来执行Sql语句:
1
2
3
4
5
|
OleDbCommand
cmd
=
new
OleDbCommand
(
sql
,
connection
)
;
connection
.
Open
(
)
;
cmd
.
ExecuteNonQuery
(
)
;
|
C#操作Access之按列读取mdb内容实例如下:
columns数组存储的是你要查询的列名称(必须确保mdb表中存在你要的列)
1
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
|
// 读取mdb数据
public
static
DataTable
ReadDataByColumns
(
string
mdbPaht
,
string
tableName
,
string
[
]
columns
,
ref
bool
success
)
{
DataTable
dt
=
new
DataTable
(
)
;
try
{
DataRow
dr
;
//1、建立连接 C#操作Access之按列读取mdb
string
strConn
=
@
"Provider=Microsoft.
Jet.OLEDB.4.0;Data Source="
+
mdbPath
+
";Jet OLEDB:Database Password=haoren"
;
OleDbConnection
odcConnection
=
new
OleDbConnection
(
strConn
)
;
//2、打开连接 C#操作Access之按列读取mdb
odcConnection
.
Open
(
)
;
//建立SQL查询
OleDbCommand
odCommand
=
odcConnection
.
CreateCommand
(
)
;
//3、输入查询语句
string
strColumn
=
""
;
for
(
int
i
=
0
;
i
<
columns
.
Length
;
i
++
)
{
strColumn
+=
columns
[
i
]
.
ToString
(
)
+
","
;
}
strColumn
=
strColumn
.
TrimEnd
(
','
)
;
odCommand
.
CommandText
=
"select "
+
strColumn
+
" from "
+
tableName
;
//建立读取 C#操作Access之按列读取mdb
OleDbDataReader
odrReader
=
odCommand
.
ExecuteReader
(
)
;
//查询并显示数据 C#操作Access之按列读取mdb
int
size
=
odrReader
.
FieldCount
;
for
(
int
i
=
0
;
i
<
size
;
i
++
)
{
DataColumn
dc
;
dc
=
new
DataColumn
(
odrReader
.
GetName
(
i
)
)
;
dt
.
Columns
.
Add
(
dc
)
;
}
while
(
odrReader
.
Read
(
)
)
{
dr
=
dt
.
NewRow
(
)
;
for
(
int
i
=
0
;
i
<
size
;
i
++
)
{
dr
[
odrReader
.
GetName
(
i
)
]
=
odrReader
[
odrReader
.
GetName
(
i
)
]
.
ToString
(
)
;
}
dt
.
Rows
.
Add
(
dr
)
;
}
//关闭连接 C#操作Access之按列读取mdb
odrReader
.
Close
(
)
;
odcConnection
.
Close
(
)
;
success
=
true
;
return
dt
;
}
catch
{
success
=
false
;
return
dt
;
}
}
|
C#操作Access之按列读取mdb的基本内容就向你介绍到这里,希望对你了解和学习C#操作Access之按列读取mdb有所帮助。
C#操作Access实例解析
C#操作Access实例是怎么实现的呢?让我们来看看具体的代码:
1
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
|
using
System
;
using
System
.
Data
;
using
System
.
Configuration
;
using
System
.
Web
;
using
System
.
Web
.
Security
;
using
System
.
Web
.
UI
;
using
System
.
Web
.
UI
.
WebControls
;
using
System
.
Web
.
UI
.
WebControls
.
WebParts
;
using
System
.
Web
.
UI
.
HtmlControls
;
using
System
.
Data
.
OleDb
;
/// <summary>
/// DataAccess 的摘要说明 C#操作Access实例解析
/// </summary>
public
class
DataAccess
{
protected
static
OleDbConnection
conn
=
new
OleDbConnection
(
)
;
protected
static
OleDbCommand
comm
=
new
OleDbCommand
(
)
;
public
DataAccess
(
)
{
//init C#操作Access实例解析
}
private
static
void
openConnection
(
)
{
if
(
conn
.
State
==
ConnectionState
.
Closed
)
{
conn
.
ConnectionString
=
@
"Provider=Microsoft.Jet.OleDb.4.0;
Data Source="
+
ConfigurationManager
.
AppSettings
[
"myconn"
]
;
//web.config文件里设定。
comm
.
Connection
=
conn
;
try
{
conn
.
Open
(
)
;
}
catch
(
Exception
e
)
{
throw
new
Exception
(
e
.
Message
)
;
}
}
}
//打开数据库 C#操作Access实例解析
private
static
void
closeConnection
(
)
{
if
(
conn
.
State
==
ConnectionState
.
Open
)
{
conn
.
Close
(
)
;
conn
.
Dispose
(
)
;
comm
.
Dispose
(
)
;
}
}
//关闭数据库 C#操作Access实例解析
public
static
void
excuteSql
(
string
sqlstr
)
{
try
{
openConnection
(
)
;
comm
.
CommandType
=
CommandType
.
Text
;
comm
.
CommandText
=
sqlstr
;
comm
.
ExecuteNonQuery
(
)
;
}
catch
(
Exception
e
)
{
throw
new
Exception
(
e
.
Message
)
;
}
finally
{
closeConnection
(
)
;
}
}
//执行sql语句 C#操作Access实例解析
public
static
OleDbDataReader
dataReader
(
string
sqlstr
)
{
OleDbDataReader
dr
=
null
;
try
{
openConnection
(
)
;
comm
.
CommandText
=
sqlstr
;
comm
.
CommandType
=
CommandType
.
Text
;
dr
=
comm
.
ExecuteReader
(
CommandBehavior
.
CloseConnection
)
;
}
catch
{
try
{
dr
.
Close
(
)
;
closeConnection
(
)
;
}
catch
{
}
}
return
dr
;
}
//返回指定sql语句的OleDbDataReader对象,使用时请注意关闭这个对象。
public
static
void
dataReader
(
string
sqlstr
,
ref
OleDbDataReader
dr
)
{
try
{
openConnection
(
)
;
comm
.
CommandText
=
sqlstr
;
comm
.
CommandType
=
CommandType
.
Text
;
dr
=
comm
.
ExecuteReader
(
CommandBehavior
.
CloseConnection
)
;
}
catch
{
try
{
if
(
dr
!=
null
&&
!
dr
.
IsClosed
)
dr
.
Close
(
)
;
}
//C#操作Access实例解析
catch
{
}
finally
{
closeConnection
(
)
;
}
}
}
//返回指定sql语句的OleDbDataReader对象,使用时请注意关闭
public
static
DataSet
dataSet
(
string
sqlstr
)
{
DataSet
ds
=
new
DataSet
(
)
;
OleDbDataAdapter
da
=
new
OleDbDataAdapter
(
)
;
try
{
openConnection
(
)
;
comm
.
CommandType
=
CommandType
.
Text
;
comm
.
CommandText
=
sqlstr
;
da
.
SelectCommand
=
comm
;
da
.
Fill
(
ds
)
;
}
catch
(
Exception
e
)
{
throw
new
Exception
(
e
.
Message
)
;
}
finally
{
closeConnection
(
)
;
}
return
ds
;
}
//返回指定sql语句的dataset C#操作Access实例解析
public
static
void
dataSet
(
string
sqlstr
,
ref
DataSet
ds
)
{
OleDbDataAdapter
da
=
new
OleDbDataAdapter
(
)
;
try
{
openConnection
(
)
;
comm
.
CommandType
=
CommandType
.
Text
;
comm
.
CommandText
=
sqlstr
;
da
.
SelectCommand
=
comm
;
da
.
Fill
(
ds
)
;
}
catch
(
Exception
e
)
{
throw
new
Exception
(
e
.
Message
)
;
}
finally
{
closeConnection
(
)
;
}
}
//返回指定sql语句的dataset C#操作Access实例解析
public
static
DataTable
dataTable
(
string
sqlstr
)
{
DataTable
dt
=
new
DataTable
(
)
;
OleDbDataAdapter
da
=
new
OleDbDataAdapter
(
)
;
try
{
openConnection
(
)
;
comm
.
CommandType
=
CommandType
.
Text
;
comm
.
CommandText
=
sqlstr
;
da
.
SelectCommand
=
comm
;
da
.
Fill
(
dt
)
;
}
catch
(
Exception
e
)
{
throw
new
Exception
(
e
.
Message
)
;
}
finally
{
closeConnection
(
)
;
}
return
dt
;
}
//返回指定sql语句的datatable
public
static
void
dataTable
(
string
sqlstr
,
ref
DataTable
dt
)
{
OleDbDataAdapter
da
=
new
OleDbDataAdapter
(
)
;
try
{
openConnection
(
)
;
comm
.
CommandType
=
CommandType
.
Text
;
comm
.
CommandText
=
sqlstr
;
da
.
SelectCommand
=
comm
;
da
.
Fill
(
dt
)
;
}
catch
(
Exception
e
)
{
throw
new
Exception
(
e
.
Message
)
;
}
finally
{
closeConnection
(
)
;
}
}
//返回指定sql语句的datatable C#操作Access实例解析
public
static
DataView
dataView
(
string
sqlstr
)
{
OleDbDataAdapter
da
=
new
OleDbDataAdapter
(
)
;
DataView
dv
=
new
DataView
(
)
;
DataSet
ds
=
new
DataSet
(
)
;
try
{
openConnection
(
)
;
comm
.
CommandType
=
CommandType
.
Text
;
comm
.
CommandText
=
sqlstr
;
da
.
SelectCommand
=
comm
;
da
.
Fill
(
ds
)
;
dv
=
ds
.
Tables
[
0
]
.
DefaultView
;
}
catch
(
Exception
e
)
{
throw
new
Exception
(
e
.
Message
)
;
}
finally
{
closeConnection
(
)
;
}
return
dv
;
}
//返回指定sql语句的dataview C#操作Access实例解析
}
|
C#操作Access实例解析的基本内容就向你介绍到这里,希望对你了解和学习C#操作Access有所帮助。