C# 判断 检测 access 建库 建表 文件是否存在等 数据操作 使用 ADOX
2012-01-07 17:04
806 查看
1.创建数据库 2.判断表是否存在 3.创建表 1. #region access数据库操作 之 创建数据库 private void creatMDB(string dbName) { ADOX.CatalogClass cat = new ADOX.CatalogClass(); cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbName + ";"); //ADOX.Catalog cat = new Catalog(); //cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbName + ";Jet OLEDB:Engine Type=5");s } #endregion 2. #region access数据库操作 之 判断数据库中是否存在某表 public bool GetTables(OleDbConnection conn) { int result = 0; DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] {null, null, null, "TABLE"}); if (schemaTable != null) { for (Int32 row = 0; row < schemaTable.Rows.Count; row++) { string col_name = schemaTable.Rows[row]["TABLE_NAME"].ToString(); if (col_name == "MyChooseStock") { result++; } } } if (result == 0) return false; return true; } #endregion 3. #region access数据库操作 之 创建表 //新建mdb的表,C#操作Access之创建表 //mdbHead是一个ArrayList,存储的是table表中的具体列名。 private void CreateMDBTable(string mdbPath, string tableName, ArrayList mdbHead) { ADOX.CatalogClass cat = new ADOX.CatalogClass(); string sAccessConnection = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + mdbPath; connection = new OleDbConnection(sAccessConnection); connection.Open(); 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; //增加一个自动增长的字段 ADOX.ColumnClass col = new ADOX.ColumnClass(); col.ParentCatalog = cat; col.Type = ADOX.DataTypeEnum.adInteger; // 必须先设置字段类型 col.Name = "id"; col.Properties["Jet OLEDB:Allow Zero Length"].Value = false; col.Properties["AutoIncrement"].Value = true; tbl.Columns.Append(col, ADOX.DataTypeEnum.adInteger, 0); // 增加一个文本字段 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); } //设置主键 tbl.Keys.Append("PrimaryKey", ADOX.KeyTypeEnum.adKeyPrimary, "id", "", ""); cat.Tables.Append(tbl); //这句把表加入数据库(非常重要) ,C#操作Access之创建表 tbl = null; cat = null; connection.Close(); } #endregion 4. using System.Data; using System.Data.OleDb; using ADOX; //需添加 Microsoft ADO Ext. 6.0 ***Security protected override void buttonOk_Click(object sender, EventArgs e) { private OleDbConnection connection; private OleDbDataAdapter dataAdapter; string systemPath = Environment.GetFolderPath(Environment.SpecialFolder.System); if (Directory.Exists(systemPath + "\\data") == false)//如果不存在就创建file文件夹 { Directory.CreateDirectory(systemPath + "\\data"); } string favoriteStockMDB = systemPath + "\\data\\Data.mdb"; if (!File.Exists(favoriteStockMDB)) creatMDB(favoriteStockMDB);//判断是否存在数据库,不存在,则创建 connection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + favoriteStockMDB); connection.Open(); if (!GetTables(connection)) { string table_name = "MyChooseStock"; ArrayList col_names = new ArrayList(); col_names.Add("StockCode"); CreateMDBTable(favoriteStockMDB, table_name, col_names); connection.Open(); } dataAdapter = new OleDbDataAdapter("select * from MyChooseStock", connection); DataSet dataSetSelect = new DataSet(); dataAdapter.Fill(dataSetSelect, "sel"); DataTable dataTable = dataSetSelect.Tables["sel"]; for (int i = 0; i < dataTable.Rows.Count; i++) { listSelect.Add(dataTable.Rows[i][1].ToString()); } OleDbCommand insertCommand = connection.CreateCommand(); insertCommand.CommandText = "insert into MyChooseStock(StockCode) values (?)"; insertCommand.Parameters.Add("StockCode", OleDbType.VarChar, 1024); insertCommand.Prepare(); insertCommand.Parameters[0].Value = list[0]; Int32 row = insertCommand.ExecuteNonQuery(); if (row != 0) { MessageBoxHelper.ShowInfo("收藏成功!"); } else { MessageBoxHelper.ShowInfo("收藏失败!"); } connection.Close(); } |
相关文章推荐
- C# 判断 检测 access 建库 建表 文件是否存在等 数据操作 使用 ADOX
- C#文件读写追加创建目录,判断目录是否存在等操作
- Windows下使用_access和_stat判断文件和目录是否存在的区别
- C#判断文件是否存在和文件夹是否存在(Windows Mobile上可以使用)
- C# 中判断文件及文件夹是否存在
- _access()函数检测文件或文件夹是否存在,_mkdir()创建目录。
- C++文件与文件夹操作(1)--判断文件和文件夹是否存在
- C#判断txt文件中某个字符串是否存在的函数
- C# _lopen判断文件是否正在被使用
- C#判断文件路径是否存在或者判断文件是否存在的方法
- 判断本地系统目录下是否存在XML文件,如果不存在就创建一个XMl文件,若存在就在里面执行添加数据
- C#远程传输(二进制流)文件及判断远程文件是否存在
- js使用数组判断提交数据是否存在相同数据
- C#判断远程文件是否存在
- access:判断文件是否存在
- C#判断硬盘上的文件是否存在方法
- C#判断文件及文件夹是否存在并创建(C#判断文件夹存在)
- js使用数组判断提交数据是否存在相同数据
- c# 注册表操作,创建,删除,修改,判断节点是否存在
- 9-18 ASP第二讲实现数据的真实操作,从txt文件中读取进行校对,判断登陆是否成功