• C# 判断access建库、建表、文件是否存在等


    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();

    }

  • 相关阅读:
    解决安装IIS时提示找不到zClientm.exe文件的问题
    在函数体内开辟动态内存时,函数形参选择指向指针的指针的原理解析
    const用法之修饰指向常量的指针
    辅助记忆“map”使用细节的经典例题
    “变量名”和“函数名”典型选记
    宁静致远
    多参数“模板类”的使用启发
    cplusplus和MSDN的优势分工
    理解关联容器“map”的关键点
    字符串或文件处理的一个可选流程
  • 原文地址:https://www.cnblogs.com/douf/p/9370635.html
Copyright © 2020-2023  润新知