c#操作Access[上] _Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2821 | 回复: 0   主题: c#操作Access[上]         下一篇 
    本主题由 Administrator 于 2014-9-6 8:17:33 移动
lalala
注册用户
等级:新兵
经验:66
发帖:0
精华:0
注册:2013-11-8
状态:离线
发送短消息息给lalala 加好友    发送短消息息给lalala 发消息
发表于: IP:您无权察看 2014-9-5 15:24:47 | [全部帖] [楼主帖] 楼主

介绍C#访问操作Access数据库的基础知识,并提供一个相关的例程。C#的ADO.NET还不能通过编程方式创建全新的ACCESS(MDB)数据库,所以还只能使用ADOX这个来自COM的链接库来操作。 主要知识点如下: using System.Data.OleDb; using System.Data; 连接字符串:String connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=product.mdb"; 建立连接:OleDbConnection connection = new OleDbConnection(connectionString); 使用OleDbCommand类来执行Sql语句: OleDbCommand cmd = new OleDbCommand(sql, connection); connection.Open(); cmd.ExecuteNonQuery(); 

    1.创建mdb库,例程如下: 需要注意的是:参数mdbPath是mdb的完整路径(不包含表的名称)。例如:D://test.mdb 

//创建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;
      }
catch { return false; }
}
//新建mdb的表 
//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;
            //新建一个表 
            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); //这句把表加入数据库(非常重要) 
            tbl = null;
            cat = null;
            cn.Close();
            return true;
      }
catch { return false; }
}
// 读取mdb数据 
public static DataTable ReadAllData(string tableName, string mdbPath,ref bool success)
{
      DataTable dt = new DataTable();
      try
      {
            DataRow dr;
            //1、建立连接 
            string strConn
            = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbPath + ";Jet OLEDB:Database Password=haoren";
            OleDbConnection odcConnection = new OleDbConnection(strConn);
            //2、打开连接 
            odcConnection.Open();
            //建立SQL查询 
            OleDbCommand odCommand = odcConnection.CreateCommand();
            //3、输入查询语句 
            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);
            }
            //关闭连接 
            odrReader.Close();
            odcConnection.Close();
            success = true;
            return dt;
      }
      catch
      {
            success = false;
            return dt;
      }
}
// 读取mdb数据 
public static DataTable ReadDataByColumns(string mdbPaht,string tableName, string[] columns, ref bool success)
{
      DataTable dt = new DataTable();
      try
      {
            DataRow dr;
            //1、建立连接 
            string strConn
            = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbPath + ";Jet OLEDB:Database Password=haoren";
            OleDbConnection odcConnection = new OleDbConnection(strConn);
            //2、打开连接 
            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;
            //建立读取 
            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);
            }
            //关闭连接 
            odrReader.Close();
            odcConnection.Close();
            success = true;
            return dt;
      }
      catch
      {
            success = false;
            return dt;
      }
}


 解决Access数据库 不可识别的数据库格式 ***.accdb(1111) 

C#用SQL语句操作ACCESS(794) 
C# 查询更新ACCESS数据(680) 


 判断本机是否安装office2003,2007和wps2007,2010(660) 

    二代身份证号码算法及C#程序实现(449) 

    将excel用户界面嵌入到自己的windows form中 (427) 

    android_adb命令(364) 

c#版本标准数独Form1.cs文件(281) 
c#操作Access[下](198) 
C#里的一些加密解密标准函数示例——DES,SHA1,RSA(190) 
C#用SQL语句操作ACCESS(0) 
C# 查询更新ACCESS数据(0) 


 解决Access数据库 不可识别的数据库格式 ***.accdb(0) 

    [数据库连接字符串] Access 连接字符串(转)(0) 

    access加密后c#连接字符串(0) 

    提高C#编程水平的50个要点(0) 

C#里的一些加密解密标准函数示例——DES,SHA1,RSA(0) 


该贴由system转至本版2014-9-6 8:17:33



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论