DataSetToAccess
我们在做SmartClent应用时,总会用到服务器数据到本机数据的读写,为了简化应用,偶就写了个DataSet更新到ACCESS数据库的类,大家拍拍。
1
/***************************************
2
*版权所有DvStudioDevGroups
3
*创建人:David DvSoft@126.com
4
*时间: 2006-08-20
5
*版本: v0.01
6
****************************************/
7
using System;
8
using System.Data;
9
using System.Data.OleDb;
10
namespace DvStudioSmartPOS
11
{
12
/// <summary>
13
/// DataSetToAccess 的摘要说明。
14
/// 从传入的DataSet中将数据更新的Access的表中;
15
/// </summary>
16
public class DataSetToAccess
17
{
18
private string ErrInfo = "";
19
public string ErrString
20
{
21
get
22
{
23
return ErrInfo;
24
}
25
}
26
public DataSetToAccess()
27
{
28
//
29
// TODO: 在此处添加构造函数逻辑
30
//
31
}
32
/// <summary>
33
/// 返回 连接字符串
34
/// </summary>
35
/// <returns>返回 连接字符串</returns>
36
private string GetConnectStr()
37
{
38
DvStudioSmartPOS.GetConnectString ConnectStringObject = new GetConnectString();
39
return ConnectStringObject.GetConnectStr();
40
}
41
/// <summary>
42
/// 返回一个表中的所有列名称的集合
43
/// </summary>
44
/// <param name="TableName">要查询的表名</param>
45
/// <param name="ConnectObject">数据库连接对象</param>
46
/// <returns>要查询的表中的所有列名称的集合</returns>
47
private string BuildingColumnsStr(string TableName,System.Data.OleDb.OleDbConnection ConnectObject)
48
{
49
System.Data.DataSet NewDataSet = new DataSet();
50
System.Data.OleDb.OleDbDataAdapter UpdateDataAdapter = new OleDbDataAdapter("Select * From " + TableName + " Where 1=2",ConnectObject);
51
UpdateDataAdapter.Fill(NewDataSet);
52
string ReturnStr = "";
53
for(int i = 0;i < NewDataSet.Tables[0].Columns.Count;i++)
54
{
55
string ColumnsNameStr = NewDataSet.Tables[0].Columns[i].ColumnName;
56
ReturnStr = ReturnStr + ColumnsNameStr.Trim() + ",";
57
}
58
ReturnStr = ReturnStr.Remove(ReturnStr.Length-1,1);
59
return ReturnStr;
60
}
61
/// <summary>
62
/// 将数据更新到Access表中
63
/// </summary>
64
/// <param name="TempDataSet">1、传入的DataSet对象</param>
65
/// <param name="TableName">2、要更新的表名</param>
66
/// <returns>返回布尔型变量,是否更新成功</returns>
67
public bool DataSetUpdaerToAccess(System.Data.DataSet TempDataSet,string TableName)
68
{
69
System.Data.OleDb.OleDbConnection ConnectObject = new OleDbConnection(GetConnectStr());
70
System.Data.OleDb.OleDbDataAdapter UpdateDataAdapter = new OleDbDataAdapter("Select " + BuildingColumnsStr(TableName,ConnectObject) +" From " + TableName + " Where 1=2",ConnectObject);
71
System.Data.OleDb.OleDbCommandBuilder CMDBuilder = new OleDbCommandBuilder(UpdateDataAdapter);
72
UpdateDataAdapter.InsertCommand = CMDBuilder.GetInsertCommand();
73
UpdateDataAdapter.DeleteCommand = CMDBuilder.GetDeleteCommand();
74
UpdateDataAdapter.UpdateCommand = CMDBuilder.GetUpdateCommand();
75
if(TempDataSet.Tables[TableName].Rows.Count < 1)
76
{
77
return true;
78
}
79
else
80
{
81
try
82
{
83
TempDataSet.Tables[TableName].Columns.Remove("总页数");
84
TempDataSet.Tables[TableName].Columns.Remove("总行数");
85
TempDataSet.Tables[TableName].Columns.Remove("总金额");
86
}
87
catch(Exception e)
88
{
89
ErrInfo = e.ToString();
90
}
91
System.Data.DataSet NewDataSet = new DataSet();
92
UpdateDataAdapter.Fill(NewDataSet);
93
NewDataSet.Tables[0].TableName = TableName;
94
for(int i = 0;i < TempDataSet.Tables[TableName].Rows.Count;i++)
95
{
96
DataRow AddRow = NewDataSet.Tables[TableName].NewRow();
97
for(int j = 0;j < NewDataSet.Tables[TableName].Columns.Count;j++)
98
{
99
string ColumnsNameStr = NewDataSet.Tables[TableName].Columns[j].ColumnName;
100
if(TempDataSet.Tables[TableName].Rows[i][ColumnsNameStr].ToString().Trim().Length > 0)
101
{
102
AddRow[ColumnsNameStr] = TempDataSet.Tables[TableName].Rows[i][ColumnsNameStr];
103
}
104
}
105
NewDataSet.Tables[TableName].Rows.Add(AddRow);
106
}
107
try
108
{
109
ConnectObject.Open();
110
}
111
catch(Exception e)
112
{
113
ErrInfo = e.ToString();
114
}
115
try
116
{
117
UpdateDataAdapter.Update(NewDataSet.Tables[TableName]);
118
}
119
catch(Exception e)
120
{
121
ErrInfo = e.ToString();
122
ConnectObject.Close();
123
return false;
124
}
125
ConnectObject.Close();
126
return true;
127
}
128
}
129
}
130
}
131
功能还不太完善,大家多拍砖;
/***************************************2
*版权所有DvStudioDevGroups3
*创建人:David DvSoft@126.com4
*时间: 2006-08-205
*版本: v0.016
****************************************/7
using System;8
using System.Data;9
using System.Data.OleDb;10
namespace DvStudioSmartPOS11
{12
/// <summary>13
/// DataSetToAccess 的摘要说明。14
/// 从传入的DataSet中将数据更新的Access的表中;15
/// </summary>16
public class DataSetToAccess17
{18
private string ErrInfo = "";19
public string ErrString20
{21
get22
{23
return ErrInfo;24
}25
}26
public DataSetToAccess()27
{28
//29
// TODO: 在此处添加构造函数逻辑30
//31
}32
/// <summary>33
/// 返回 连接字符串34
/// </summary>35
/// <returns>返回 连接字符串</returns>36
private string GetConnectStr()37
{38
DvStudioSmartPOS.GetConnectString ConnectStringObject = new GetConnectString();39
return ConnectStringObject.GetConnectStr();40
}41
/// <summary>42
/// 返回一个表中的所有列名称的集合43
/// </summary>44
/// <param name="TableName">要查询的表名</param>45
/// <param name="ConnectObject">数据库连接对象</param>46
/// <returns>要查询的表中的所有列名称的集合</returns>47
private string BuildingColumnsStr(string TableName,System.Data.OleDb.OleDbConnection ConnectObject)48
{49
System.Data.DataSet NewDataSet = new DataSet();50
System.Data.OleDb.OleDbDataAdapter UpdateDataAdapter = new OleDbDataAdapter("Select * From " + TableName + " Where 1=2",ConnectObject);51
UpdateDataAdapter.Fill(NewDataSet);52
string ReturnStr = "";53
for(int i = 0;i < NewDataSet.Tables[0].Columns.Count;i++)54
{55
string ColumnsNameStr = NewDataSet.Tables[0].Columns[i].ColumnName;56
ReturnStr = ReturnStr + ColumnsNameStr.Trim() + ",";57
}58
ReturnStr = ReturnStr.Remove(ReturnStr.Length-1,1);59
return ReturnStr;60
}61
/// <summary>62
/// 将数据更新到Access表中63
/// </summary>64
/// <param name="TempDataSet">1、传入的DataSet对象</param>65
/// <param name="TableName">2、要更新的表名</param>66
/// <returns>返回布尔型变量,是否更新成功</returns>67
public bool DataSetUpdaerToAccess(System.Data.DataSet TempDataSet,string TableName)68
{69
System.Data.OleDb.OleDbConnection ConnectObject = new OleDbConnection(GetConnectStr());70
System.Data.OleDb.OleDbDataAdapter UpdateDataAdapter = new OleDbDataAdapter("Select " + BuildingColumnsStr(TableName,ConnectObject) +" From " + TableName + " Where 1=2",ConnectObject);71
System.Data.OleDb.OleDbCommandBuilder CMDBuilder = new OleDbCommandBuilder(UpdateDataAdapter);72
UpdateDataAdapter.InsertCommand = CMDBuilder.GetInsertCommand();73
UpdateDataAdapter.DeleteCommand = CMDBuilder.GetDeleteCommand();74
UpdateDataAdapter.UpdateCommand = CMDBuilder.GetUpdateCommand();75
if(TempDataSet.Tables[TableName].Rows.Count < 1)76
{77
return true;78
}79
else80
{81
try82
{83
TempDataSet.Tables[TableName].Columns.Remove("总页数");84
TempDataSet.Tables[TableName].Columns.Remove("总行数");85
TempDataSet.Tables[TableName].Columns.Remove("总金额");86
}87
catch(Exception e)88
{89
ErrInfo = e.ToString();90
}91
System.Data.DataSet NewDataSet = new DataSet();92
UpdateDataAdapter.Fill(NewDataSet);93
NewDataSet.Tables[0].TableName = TableName;94
for(int i = 0;i < TempDataSet.Tables[TableName].Rows.Count;i++)95
{96
DataRow AddRow = NewDataSet.Tables[TableName].NewRow();97
for(int j = 0;j < NewDataSet.Tables[TableName].Columns.Count;j++)98
{99
string ColumnsNameStr = NewDataSet.Tables[TableName].Columns[j].ColumnName;100
if(TempDataSet.Tables[TableName].Rows[i][ColumnsNameStr].ToString().Trim().Length > 0)101
{102
AddRow[ColumnsNameStr] = TempDataSet.Tables[TableName].Rows[i][ColumnsNameStr];103
}104
}105
NewDataSet.Tables[TableName].Rows.Add(AddRow);106
}107
try108
{109
ConnectObject.Open();110
}111
catch(Exception e)112
{113
ErrInfo = e.ToString();114
}115
try116
{117
UpdateDataAdapter.Update(NewDataSet.Tables[TableName]);118
}119
catch(Exception e)120
{121
ErrInfo = e.ToString();122
ConnectObject.Close();123
return false;124
}125
ConnectObject.Close();126
return true;127
}128
}129
}130
}131



浙公网安备 33010602011771号