文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>把access的数据添加到sqlserver中去

把access的数据添加到sqlserver中去

时间:2011-02-23  来源:兰悦儿

功能描述:

1.用一个上传控件上传一个access数据库保存到指定的文件夹upload下;

2.读取access里面的数据,把这些数据都添加到sqlserver中去。

本来以为做五六个钟头的,结果从上午8点多做到晚上8点多。可谓效率低下,所以写篇总结文。

先说上传access数据库并实现成功访问,就弄了一上午,主要原因就是之前都是报错说在指定的目录下找不到文件。

经调试后发现原因是路径里多了个不必要的目录,奇怪,明明是动态获得的,但是却多了个目录,还好,上网一搜,在添加相对目录前加了个~/(代表在跟目录下),这才行了。

再就是得到所有access里面的数据。之前我傻傻的,

在网上找了个查找access某表的sql语句。查询出来的其实应该就是一个表的数据,这时大概就是三点多了。然后瞎闹腾,遍历是有数据的,但是怎么把它循环出来又在那里卡住了。我想,要把数据添加到sqlserver中去,那得根据数据在sqlserver中创建每个表,每个表的列,数据吧,遍历出来的数据类型我怎么知道该列的数据类型是什么呢?在这里就一直卡着,头脑和浆糊一样了。。觉得到这里自己根本就做不出来了。

到了吃晚饭前老大看我到这个时候都还没做出来就自己做了下,刷刷刷,一下就做出来了,我都觉得自己可以走人了,老大说我是思路不清晰。。。。

他的代码加我的代码。

  1  #region
2 /// <summary>
3 /// 读取access数据库
4 /// </summary>
5 /// <param name="attach"></param>
6 public static void ReadDataBase(string path)
7 {
8 //连接access数据库的字符串
9 string connString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + System.Web.HttpContext.Current.Server.MapPath("~/" + path);
10 //连接数据库的链接对象
11 OleDbConnection acconn = new OleDbConnection(connString);
12 acconn.Open();
13 //ClassOledb co = new ClassOledb(connString);
14 //conn.Open();
15 //co.mycon().Open();
16 // SqlDataAdapter myAdapter = new SqlDataAdapter();
17 DataTable dt = acconn.GetSchema("Tables");//获取ACCESS数据库中所有的表\查询\宏\窗体\模块
18
19 int n = dt.Columns.Count; //
20 string[] strTable = new string[n];
21 int m = dt.Columns.IndexOf("TABLE_NAME");
22 //-----开始
23
24 for (int i = 0; i < n; i++)
25 {
26
27 DataRow dtrow = dt.Rows[i];
28 string tableName = dtrow.ItemArray.GetValue(m).ToString();
29 //创建一个同名的表
30 StringBuilder sqlCreateT = new StringBuilder();
31 //sqlCreateT.Append("create table download(mID int,mTitle varchar(50),mFileName varchar(50))");
32 OleDbCommand cmd = new OleDbCommand("select * from " + tableName, acconn);
33 cmd.CommandType = CommandType.Text;
34 OleDbDataAdapter da = new OleDbDataAdapter(cmd);
35 DataTable ds = new DataTable();
36 da.Fill(ds);
37 for (int j = 0; j < ds.Rows.Count; j++)
38 {
39 conn.Open();
40 if (conn.State != ConnectionState.Open)
41 {
42 }
43 StringBuilder sb = new StringBuilder();
44 for (int c = 0; c < ds.Columns.Count; c++)
45 {
46 if (c == ds.Columns.Count - 1)
47 {
48 sb.Append(ds.Columns[c].ColumnName.ToString());
49 }
50 else
51 {
52 sb.Append(ds.Columns[c].ColumnName.ToString());
53 sb.Append(", ");
54 }
55 }
56 string[] columnName = sb.ToString().Split(',');
57
58 StringBuilder values = new StringBuilder();
59 for (int c = 0; c < ds.Columns.Count; c++)
60 {
61 if (c == ds.Columns.Count - 1)
62 {
63 values.Append("'" + ds.Rows[j][c].ToString() + "'");
64 }
65 else
66 {
67 values.Append("'" + ds.Rows[j][c].ToString() + "'");
68 values.Append(", ");
69 }
70 }
71
72 string sql = "insert into " + tableName + "(" + sb.ToString() + ") values(" + values.ToString() + ")";
73 ExecuteCommand(sql);
74 }
75 ///注释
76 #region
77
78
79 //tableName = dt.Rows[i].ItemArray[2].ToString();
80 //string sql = "SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source=@" + System.Web.HttpContext.Current.Server.MapPath("~/" + path) + "..." + tableName;
81
82
83 //string sqlQuery = "SELECT * FROM " + tableName;
84 //DataTable dtt = new DataTable();
85 //dtt =GetDataSet(sqlQuery);
86 //if(dtt== null)
87 //{
88 // string sql = "SELECT * INTO " + tableName + " FROM OPENDATASOURCE ( 'Microsoft.Jet.OLEDB.4.0', 'Data Source=" + path + "')... " + tableName;
89 // ExecuteCommand(sql);
90 //}
91 #endregion
92 conn.Close();
93 }
94 acconn.Close();
95
96
97
98
99
100 //dataset = co.chaxun(sql);
101
102 //for (int i = 0; i < dataset.Tables.Count; i++)
103 //{
104 // string tb1 = dataset.Tables[i].TableName;
105 // SqlCommand myCommand = new SqlCommand("select * from " + dataset.Tables[i].TableName);
106 // myAdapter.SelectCommand = myCommand;
107 // SqlCommandBuilder myCommandBuilder = new SqlCommandBuilder(myAdapter);
108 // try
109
110 // { myAdapter.Update(dataset, dataset.Tables[i].TableName); }
111
112 // catch { }
113 //}
114 return;
115 }
116
117 #endregion
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载