zoukankan      html  css  js  c++  java
  • dbf

    #(.net)对dbf(arcgis shp属性表)的操作2008-10-24 21:02
    from:http://www.cnblogs.com/xiexiaokui/archive/2007/11/12/956984.html

    背景知识:
    arcgis的属性表是dbf格式的,应该是dbf4版本。
    dbf可以用excel,access打开读取,但是好像不能进行修改。
    因此dbf最好还是用foxpro等数据库系列软件打开。
    为了批量处理,尤其是逻辑操作,更希望可以用c#进行操作,
    资料一:
    参考 http://www.cnblogs.com/tanjy/archive/2006/11/14/560046.html
    protected void Page_Load(object sender, EventArgs e)
        {
            System.Data.Odbc.OdbcConnection conn = new System.Data.Odbc.OdbcConnection();
            string table = @"D:\aaa\code.dbf";
            string mailto:connStr=@%22Driver=%7BMicrosoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" + table + ";Exclusive=No;NULL=NO;Collate=Machine;BACKGROUNDFETCH=NO;DELETED=NO";

            conn.ConnectionString = connStr;
            conn.Open();
           

            OdbcCommand cmd = new OdbcCommand();
            cmd.Connection = conn;
            string sql = "update " + table + " set other='2',rate=1.014 ";
            cmd.CommandText = sql;
            cmd.CommandType = CommandType.Text;
            cmd.ExecuteNonQuery();

             sql = @"select * from " + table;
            OdbcDataAdapter da = new OdbcDataAdapter(sql,conn);
            DataTable dt = new DataTable();
            da.Fill(dt);
            this.GridView1.DataSource = dt.DefaultView;
            this.GridView1.DataBind();

        }
    注意点:1 连接串的格式。2 所对应的表名必须要有路径。

    资料二:
    参考 http://blog.ouc.edu.cn/2006/07/cdbf-1.html
    c#访问dbf数据库方式大全(验证版)
    一,通过Visual FoxPro Ole DBProvider,参考http://fox.wikis.com/wc.dll?Wiki~VFPOleDBProvider~VFP 安装一个驱动先,然后作了个连结字,然后ok。
    using System;
    using System.Data;
    using System.Data.ProviderBase;
    using System.Data.OleDb;
    using System.Data.Odbc;
    using System.Data.SqlClient;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;

    public partial class _Default : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {

    OleDbConnection ContactMgmt = new OleDbConnection("Provider=VFPOLEDB.1;Data Source=C:\\文件夹名字;Collating Sequence=MACHINE");
    OleDbCommand cmdNewID = new OleDbCommand("select * from dfb的名字", ContactMgmt);
    ContactMgmt.Open();
    OleDbDataReader aReader = cmdNewID.ExecuteReader();
    Response.Write("This is the returned data from test table");
    while(aReader.Read())
    {
    Response.Write("
    ");
    Response.Write(aReader["列名"].ToString());
    }
    aReader.Close();
    ContactMgmt.Close();
    }
    }

    2,如果可以确定哪种dbf格式,可以不用安装驱动,直接用
    OleDbConnection ContactMgmt = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\文件夹;Extended Properties=dBASE IV;User ID=Admin;Password=");

    3,如果单个的dbf文件也可以使用,这种最简单,应该可以使用,没有测试。嘿嘿。
    using Microsoft.Data.Odbc

    再用以下代码建立OdbcConnection, OdbcDataAdapter, DataSet.

    OdbcConnection oCn = New OdbcConnection("DSN=MYDBF")
    OdbcDataAdapter oDa = new OdbcDataAdapter("SELECT * FROM c:\myTable.dbf", oCn)

    DataSet oDs = New DataSet()
    oDa.Fill(oDs, "myTable")

    资料三
    参考 http://hi.baidu.com/lostleaf/blog/item/7484b63e75a34efa828b1397.html
    c#读取dbf文件2006年12月25日 星期一 16:14此方式将dbf文件所在目录看作数据库,其中的dbf文件看作数据库表,表名即文件名(不加扩展名)。


    //把打开的dbf文件导入DATASET

           private DataSet importDbfToDataSet(string FilePath,string tabname)

           {

                string strConnection = @"Dsn=Visual FoxPro Tables;sourcedb=" + FilePath.Substring(0, FilePath.LastIndexOf("\\")) + ";sourcetype=DBF;exclusive=No;backgroundfetch=Yes;collate=Machine";

    //对于连接串,注意版本问题

               string   strSelect="SELECT * FROM "+tabname;  

               OdbcConnection   thisConnection   =   new   OdbcConnection(strConnection);  

               thisConnection.Open();  

               OdbcDataAdapter   thisAdapter   =   new OdbcDataAdapter(strSelect,thisConnection);  

               DataSet   thisDataSet   =   new   DataSet();  

               try  

               {  

                  thisAdapter.Fill(thisDataSet);  

               }  

               catch(Exception   exec)  

               {  

                  MessageBox.Show(exec.Message);  

               }  

               return thisDataSet;

           }


     

  • 相关阅读:
    LeetCode120 Triangle
    LeetCode119 Pascal's Triangle II
    LeetCode118 Pascal's Triangle
    LeetCode115 Distinct Subsequences
    LeetCode114 Flatten Binary Tree to Linked List
    LeetCode113 Path Sum II
    LeetCode112 Path Sum
    LeetCode111 Minimum Depth of Binary Tree
    Windows下搭建PHP开发环境-WEB服务器
    如何发布可用于azure的镜像文件
  • 原文地址:https://www.cnblogs.com/ggbbeyou/p/1595617.html
Copyright © 2011-2022 走看看