C#操作VFP的dbf数据库文件实例

UVM验证平台树形结构全解析:从Hierarchy到调试实战 在芯片验证领域,UVM验证平台通过组件化与层次化管理,构建出高效可复用的验证环境。其核心的树形结构(Hierarchy)以uvm_root为根节点,自顶向下挂载test、env、agent等组件,形成统一的生命周期管理。这一设计不仅支撑phase机制的有序执行,还决定了config_db的路径匹配与TLM通信的可见性。理解树的构建原理,掌握print_topology等调试手段,能够帮助工程师快速定位组件创建、配置传递等问题。在实际工程中,树形结构还深刻影响着寄存器模型的挂载与镜像值访问,是多接口验证平台设 阅读详情

实例中分别使用Oledb和Odbc操作vfp数据库dbf文件,操作包括:读取,增删改。

已测试可直接使用,使用方法:下面代码分两个部分aspx和cs,在vs2005中新建网站项目,分别copy文件到想要的文件中即可。

aspx页面:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
       <center> <h2>C#操作VFP的dbf数据库文件实例</h2><hr />
        <asp:gridview Width="400px" ID="Gridview1" runat="server"></asp:gridview>
            <asp:Button ID="btnInti" runat="server" OnClick="btnInti_Click" Text="createTable" />
        <br />
        <asp:Button ID="btnInsert" runat="server" OnClick="btnInsert_Click" Text="btnInsert" />
        <asp:Button ID="btnUpdate" runat="server" OnClick="btnUpdate_Click" Text="btnUpdate" />
        <asp:Button ID="btnDelete" runat="server" OnClick="btnDelete_Click" Text="btnDelete" />      
        <br />
        <asp:Button ID="btnShowWithOledb" runat="server" OnClick="btnShowWithOledb_Click"
            Text="showWithOledb" />
        <asp:Button ID="btnShowWithOdbc" runat="server" OnClick="btnShowWithOdbc_Click" Text="showWithOdbc" />
        </center>
    </div>
      <span style="color: red">* 首先:在d盘下创建testDB的VFP数据库.然后可使用vs2005测试.
      其中必须要先创建表,即:点击createTable按钮。</span>
    </form>
</body>
</html>

cs代码:

using System;
using System.Data;
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;
using System.Data.Odbc;
using System.Data.OleDb;

public partial class _Default : System.Web.UI.Page
{
    /// <summary>
    /// 数据文件
    /// </summary>
    private static string table = @"D:/User.dbf";

    /// <summary>
    /// Odbc链接字符串 ,其中SourceDB可以是dbf文件所在的目录也可以制定到文件,作用是一样的,如:SourceDB=d:/;或SourceDB==D:/Allart.dbf
    /// </summary>
    private static string strConn = @"Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=d:/;Exclusive=No;NULL=NO;Collate=Machine;BACKGROUNDFETCH=NO;DELETED=NO";
   
    /// <summary>
    /// Oledb链接字符串
    /// 1,到微软网站下载<Microsoft OLE DB Provider for Visual FoxPro 9.0>并安装,这样oledb才能识别provider=VFPOLEDB.1,
    /// http://www.microsoft.com/downloads/thankyou.aspx?familyId=e1a87d8f-2d58-491f-a0fa-95a3289c5fd4&displayLang=en
    /// 2,其中SourceDB可以是dbf文件所在的目录也可以制定到文件,作用是一样的,如:data source=d:/;或data source==D:/Allart.dbf
    /// </summary>
    private static string strOledbConn = @"provider=VFPOLEDB.1;data source=d:/;user id=admin;password=";

    protected void Page_Load(object sender, EventArgs e)
    {
       
    }

    /// <summary>
    /// 初始化vfp数据库,创建user表
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnInti_Click(object sender, EventArgs e)
    {
        string strOledbConn = @"provider=VFPOLEDB.1;data source=d:/testDB.dbc;user id=admin;password=";
        OleDbConnection conn = new OleDbConnection(strOledbConn);
        OleDbCommand cmd = new OleDbCommand();
        string sql = "CREATE TABLE User (ID c(6) ,Name C(20),BirthDay t,Salary n(6,2))";
        cmd.CommandText = sql;
        cmd.Connection = conn;
        conn.Open();
        cmd.ExecuteNonQuery();
        conn.Close();
        showDataWithOdbc();
        Response.Write("表格生成成功!");
    }

    /// <summary>
    /// 插入数据
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnInsert_Click(object sender, EventArgs e)
    {
        OdbcConnection conn = new OdbcConnection(strConn);
        OdbcCommand cmd = new OdbcCommand();
        //字符c,时间t,数字n
        string sql = "insert into " + table + "(id,name,birthday,salary) values('1','haha',{^1985-09-10},3300.1)";
        cmd.CommandText = sql;
        cmd.Connection = conn;
        conn.Open();
        cmd.ExecuteNonQuery();
        conn.Close();
        showDataWithOdbc();
        Response.Write("表格插入成功!");
    }

    /// <summary>
    /// 更新数据
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnUpdate_Click(object sender, EventArgs e)
    {

        OdbcConnection conn = new OdbcConnection(strConn);
        OdbcCommand cmd = new OdbcCommand();
        string sql = "update " + table + " set ID ='2',name='haha2'";
        cmd.CommandText = sql;
        cmd.Connection = conn;
        conn.Open();
        cmd.ExecuteNonQuery();
        conn.Close();
        showDataWithOdbc();
        Response.Write("表格更新成功!");
    }

    /// <summary>
    /// 删除数据
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnDelete_Click(object sender, EventArgs e)
    {

        OdbcConnection conn = new OdbcConnection(strConn);
        OdbcCommand cmd = new OdbcCommand();
        string sql = "delete from  " + table;
        cmd.CommandText = sql;
        cmd.Connection = conn;
        conn.Open();
        cmd.ExecuteNonQuery();
        conn.Close();
        showDataWithOdbc();
        Response.Write("表格删除成功!");
    }

    /// <summary>
    /// 使用Oledb显示数据中数据
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnShowWithOledb_Click(object sender, EventArgs e)
    {
        showDataWithOledb();
        Response.Write("成功调用Oledb显示数据!");
    }
    /// <summary>
    /// 使用Odbc显示数据中数据
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnShowWithOdbc_Click(object sender, EventArgs e)
    {
        showDataWithOdbc();
        Response.Write("成功调用Odbc显示数据!");
    }

    /// <summary>
    /// 使用Odbc驱动链接数据库并显示数据
    /// </summary>
    private void showDataWithOdbc()
    {
        OdbcConnection conn = new OdbcConnection();
        conn.ConnectionString = strConn;
        conn.Open();
        string sql = @"select  * from " + table;
        OdbcDataAdapter da = new OdbcDataAdapter(sql, conn);
        DataTable dt = new DataTable();
        da.Fill(dt);
        Gridview1.DataSource = dt.DefaultView;
        Gridview1.DataBind();
        conn.Close();
    }

    /// <summary>
    /// 使用OleDb驱动链接数据库并显示数据
    /// </summary>
    private void showDataWithOledb()
    {
        OleDbConnection conn = new OleDbConnection();
        conn.ConnectionString = strOledbConn;
        conn.Open();
        string sql = @"select  * from " + table ;
        OleDbDataAdapter da = new OleDbDataAdapter(sql, conn);
        DataTable dt = new DataTable();
        da.Fill(dt);
        Gridview1.DataSource = dt.DefaultView;
        Gridview1.DataBind();
        conn.Close();
    }
 
}
 

c#生成dbf文件方法 自己写的c#生成dbf文件方法 代码注释比较详细 立即下载

相关推荐

C#使用读取文件方式读取DBF库生成DataTable,将DataTable生成DBF

操作DBF库和DataTable转换,DBF生成DataTable,DataTable生成DBF文件

C# 数据库之 DBF

DBF格式的数据库是老的数据库,用foxpro可以打开,社会上那些牛逼的软件也可以打开。当然微软的一些软件也可以打开。 但是如果我们用C#开发的话,需要先安装一个VFPOLEDBSetup.msi,这个微软官网上就有下的,网上一搜好多。 可能需要引入两个库 using System.Data; using System.Data.OleDb; 然后开始码代码; 最简单的代码 public stat...

qq_36196748的博客 1452

DbfDotNet_version_1.0_Source

Introduction This article present a tiny database engine which implements fixed width record tables and BTree indexes. This library is a work in progress, I am looking for some feedback on this to see if there is a need for it. This article is also a work in progress please bookmark and come back later, if you want to see the final article. Why an embedded database Although most of us will use a SQL Server to store and retrieve data sets. There are several situation where an embedded database make sense. When you don't have a SQL Server available When you want your footprint as small as possible and can't afford SQL Express When you want to manipulate or cache SQL data When you need to write highly procedural data manipulation routines When you want maximum speed Features Despite its small size DbfDotNet provides a number of features that you might find useful Type safe In DbfDotNet you manipulate classes with native field types. All data conversion plumbing is done automatically. Very simple entity framework Creating a record and accessing its propery is only what you need. Very small memory footprint Last time I checked the dbfDotNet dll was 50Kb. Other databases are 1Mb to 10Mb. I would appreciate if someone could do some memory usage comparison (I will insert it here). Fast DbfDotNet was conceived for speed. DbfDotNet do not use PInvoke, Threading locks, and do not implement any transaction system. Those 3 technologies have a performance cost that it won't have to pay. In contrast it is using TypeSafe records (without boxing/unboxing) and type safe emitted code. The code is emitted only once per table. It has therefore I believe the potential to be the fastest embedded .Net database there is. I would appreciate if someone could do some speed comparison (I will insert it here). Very small runtime memory usage When you use in Memory DataTable or SQL requests that return DataSets, the entire result sets is in memory. DbfDotNet works conjointly with the garbage collector. As soon as you're finished modifying an entity the garbage collector will mark the record buffer to be saved to disk and released from memory. Why Dbf By default the files are compatible with dBase and can therefore be open in Excel and many other packages. I have been asked : Why Dbf ? Dbf is an old format. The answer is a bit long but simple. As I said earlier DbfDotNet is designed to be as fast as possible. In order to get the database started and get some interest I need two things: A good product A good user base I know by experience that the DBF format will appeal to some of you for several reason: You can easily backup DBF files (and leave index files) You can check DBF content using Excel and many other tools DBF is well known and simple to implement It can be extended to modern types (and has been by clipper and fox pro) Most importantly for me, implementing the .DBF rather that my own custom format has no impact on runtime speed. How does it compare to ADO.Net, SQL, SqlLite, SharpSQL ... I did some speed test against another database (which I won't name) The results are quite encouraging. Dbf.Net ADO.Net Collapse Copy CodeOpening DbfDotNetDatabase: 185 ms Insert 1000 individuals: 39 ms Read individuals sequentially: 5 ms Read individual randomly: 3 ms Modifying individuals: 21 ms Create DateOfBirth index: 77 ms Michael Simmons 22/07/1909 Mark Adams 21/09/1909 Charles Edwards 28/09/1909 ... total 1000 records Enumerate Individuals by age: 36 ms Closing DbfDotNetDatabase: 44 ms Collapse Copy CodeOpening ADO.Net Database: 459 ms Insert 1000 individuals: 80601 ms Read individuals sequentially: 1655 ms Read individual randomly: 1666 ms Modifying individuals: 75574 ms Create DateOfBirth index: 80 ms Michael Simmons 22/07/1909 Mark Adams 21/09/1909 Charles Edwards 28/09/1909 ... total 1000 records Enumerate Individuals by age: 29 ms Closing ADO.Net Database: 0 ms In this test Dbf.Net runs nearly 400 times faster. This is quite unfair however. Dbf.Net does not have transactions and is not ACID. Lets not focus to much on speed but more on code differences: Creating a Table Creating the table is quite different. Dbf.Net requires a type safe record upfront to create a table. In ADO.Net you provide a string. Dbf.Net ADO.Net Collapse Copy CodeDbfTable<dbfdotnetindividual> mIndividuals; void CreateIndividualTable() { mIndividuals = new DbfTable<dbfdotnetindividual>( @"individuals.dbf", Encoding.ASCII, DbfDotNet.DbfVersion.dBaseIV); } class Individual : DbfDotNet.DbfRecord, IIndividual { [DbfDotNet.Column(Width = 20)] public string FIRSTNAME; [DbfDotNet.Column(Width = 20)] public string MIDDLENAME; [DbfDotNet.Column(Width = 20)] public string LASTNAME; public DateTime DOB; [DbfDotNet.Column(Width = 20)] public string STATE; } Collapse Copy CodeConnection _cnn = null; void ITestDatabase.CreateIndividualTable() { _cnn = new System.Data.Connection( "Data Source=adoNetTest.db"); _cnn.Open(); using (DbCommand cmd = _cnn.CreateCommand()) { cmd.CommandText = "CREATE TABLE INDIVIDUAL (ID int primary key, FIRSTNAME VARCHAR(20), MIDDLENAME VARCHAR(20), LASTNAME VARCHAR(20), DOB DATE, STATE VARCHAR(20))"; cmd.ExecuteNonQuery(); } } Inserting new entries in a table: Dbf.Net ADO.Net Collapse Copy Codevoid InsertNewIndividual( int id, string firstname, string middlename, string lastname, DateTime dob, string state) { var indiv = mIndividuals.NewRecord(); indiv.FIRSTNAME = firstname; indiv.MIDDLENAME = middlename; indiv.LASTNAME = lastname; indiv.DOB = dob; indiv.STATE = state; indiv.SaveChanges(); } Collapse Copy Codevoid InsertNewIndividual( int id, string firstname, string middlename, string lastname, DateTime dob, string state) { using (DbCommand cmd = _cnn.CreateCommand()) { cmd.CommandText = string.Format( "INSERT INTO INDIVIDUAL (ID, FIRSTNAME, MIDDLENAME, LASTNAME, DOB, STATE) VALUES({0}, '{1}', '{2}', '{3}', '{4}', '{5}');", id, firstname, middlename, lastname, dob.ToString("yyyy-MM-dd HH:mm:ss"), state); cmd.ExecuteNonQuery(); } } Getting an individual by record ID Dbf.Net ADO.Net Collapse Copy CodeIIndividual GetIndividualById(int id) { DbfDotNetIndividual result = mIndividuals.GetRecord(id); return result; } Collapse Copy CodeIIndividual GetIndividualById(int id) { using (DbCommand cmd = _cnn.CreateCommand()) { cmd.CommandText = string.Format( "SELECT * FROM INDIVIDUAL WHERE ID=" + id); var reader = cmd.ExecuteReader(); try { if (reader.Read()) return GetNewIndividual(reader); else return null; } finally { reader.Close(); } } } Individual GetNewIndividual( DbDataReader reader) { var res = new Individual(); res.ID = reader.GetInt32(0); res.FirstName = reader.GetString(1); res.MiddleName = reader.GetString(2); res.LastName = reader.GetString(3); res.Dob = reader.GetDateTime(4); res.State = reader.GetString(5); return res; } class Individual : IIndividual { public int ID { get; set; } public string FirstName { get; set; } public string MiddleName { get; set; } public string LastName { get; set; } public DateTime Dob { get; set; } public string State { get; set; } } Saving a modified individual back to the database. In Dbf.Net you don't have to write any code, if you don't want to wait for the garbage collector to collect your individual you can call SaveChanges. Dbf.Net ADO.Net Collapse Copy Codevoid SaveIndividual( Individual individual) { individual.SaveChanges(); } Collapse Copy Codevoid SaveIndividual( IIndividual individual) { using (DbCommand cmd = _cnn.CreateCommand()) { cmd.CommandText = string.Format( "UPDATE INDIVIDUAL SET DOB='{1}' WHERE ID={0};", individual.ID, individual.Dob.ToString( "yyyy-MM-dd HH:mm:ss")); cmd.ExecuteNonQuery(); } } Creating an Index Dbf.Net ADO.Net Collapse Copy Codevoid CreateDobIndex() { var sortOrder = new DbfDotNet.SortOrder<Individual>( /*unique*/false); sortOrder.AddField("DOB"); mDobIndex = mIndividuals.GetIndex( "DOB.NDX", sortOrder); } Collapse Copy Codevoid CreateDobIndex() { using (DbCommand cmd = _cnn.CreateCommand()) { cmd.CommandText = string.Format( "CREATE INDEX DOB_IDX ON INDIVIDUAL (DOB)"); cmd.ExecuteNonQuery(); } } Getting individuals sorted by Age Dbf.Net ADO.Net Collapse Copy CodeIEnumerable<Individual> IndividualsByAge() { foreach (Individual indiv in mDobIndex) { yield return indiv; } } Collapse Copy CodeIEnumerable<Individual> IndividualsByAge() { using (DbCommand cmd = _cnn.CreateCommand()) { cmd.CommandText = string.Format( "SELECT * FROM INDIVIDUAL ORDER BY DOB"); var reader = cmd.ExecuteReader(); try { while (reader.Read()) { yield return GetNewIndividual(reader); } } finally { reader.Close(); } } } High Level Interface I have been asked how I compare to other SQL databases. Again DbfDotNet is not a SQL engine. It is rather an object persistence framework, like the Microsoft Entity Framework or NHibernate. The difference is that it doesn't translate object manipulations into SQL requests because it speaks directly to the database layer. I would love to write a proper Dbf to Linq interface, if you want to help me on this please volunteer. The difference Using the code Warning: This project is at its infancy, it has not been tested thoroughly. You can try it but please don't use it in a live environment. If you want speed however and are ready to either report or fix issues that might arrise: Create a C# project Reference DbfDotNet.dll in your project Create a record class Write some code manipulate the records Point 3 and 4 are expanded below. The DbfRecord class The DbfRecord class represent one row in your table. You can can the column attribute to change DBF specific parameters. Collapse Copy Code class Individual : DbfDotNet.DbfRecord { [Column(Width = 20)] public string FIRSTNAME; [Column(Width = 20)] public string MIDDLENAME; [Column(Width = 20)] public string LASTNAME; public DateTime DOB; [Column(Width = 20)] public string STATE; }The system automatically chooses the DbfField most appropriate for your datatype. The DbfTable class In order to store your records somewhere you need to create a Table: Collapse Copy Code individuals = new DbfTable<Individual>( @"individuals.dbf", Encoding.ASCII, DbfVersion.dBaseIV); Note that this using a type safe template. Every record in the table are individual's. Record Manipulation You can add new lines in the table by using the NewRecord Collapse Copy Code var newIndiv = individuals.NewRecord();Then you simply use the fields in your record Collapse Copy Code newIndiv.LASTNAME = "GANAYE";Optionally you can make a call to SaveChanges to immediately save your changes. If you don't the data will be saved when your individual is garbage collected. Collapse Copy Code newIndiv.SaveChanges(); Index support This is still very basic. First you define your sort order: Collapse Copy Code var sortOrder = new SortOrder<Individual>(/* unique */ false); sortOrder.AddField("LASTNAME");Then you can get your index: Collapse Copy Code mIndex = individuals.GetIndex("lastname.ndx", sortOrder); You can then, In a type safe way, retrieve any individual from your index. Collapse Copy Code individual = mIndex.GetRecord(rowNo); In order to maximize speed, the index emit its own type safe code for : reading the index fields from the DBF record reading and writing index entries comparing index entries Inner architecture DbfDotNet main class is the ClusteredFile The ClusteredFile is a wrapper around stream that provide paging and caching support. The ClusteredFile is the base class for DbfFile and NdxFile. It will also be the base class for memo files when I write them. The ClusteredFile uses a class called QuickSerializer to serialize the record content to a byte array. QuickSerializer parse the Record fields and generate a bit of IL code for every fields to allow reading, saving and comparison. NdxFile implements a B+Tree index Roadmap My plan is to keep this library extremelly small. It is not my intention to implement any transaction or multi-threading support. I will implement : support for every DBF fields types memo fields (VARCHAR type) multiple indexes files (*.mdx) Proper documentation LINQ (in a separate dll) If you want to help me on this project please contact me. Points of Interest In order to maximize speed I forced myself to not use any thread synchronization locking. Each set of Dbf + Indexes must be called from a given thread. In other word each dbf file and its index can be used by only one thread. I encountered a problem though when the Garbage Collector finalize a record, this is done in the Garbage Collector thread. I did not want to lock a resource and ended up writing this code: Collapse Copy Codeclass Record { private RecordHolder mHolder; ~Record() { try { ... } finally { mHolder.RecordFinalized.Set(); } } } Each record has a RecordHolder that store a ReadBuffer and potentially a WriteBuffer. When the record finalize it signal the RecordHolder that the record has been finalized. This instruction is not blocking, it raises a flag that can be used in other threads. Collapse Copy Codeclass ClusteredFile { internal virtual protected Record InternalGetRecord(UInt32 recordNo) { RecordHolder holder = null; if (!mRecordsByRecordNo.TryGetValue(recordNo, out holder)) {...} record = holder.mRecordWeakRef.Target; if (record==null) { // the object is not accessible it has finalized a while ago or is being finalized if (holder.RecordFinalized.WaitOne()) { //Now it has finalized we will create a new record holder.RecordFinalized.Reset(); holder.Record = OnCreateNewRecord(/*isnew*/false, recordNo); } } return holder.Record; } } And then when the table thread try to get the record while it is disposing we use the method : holder.RecordFinalized.WaitOne() to make sure the finalization has completed first. Most of the time this method won't be blocking your DBF thread as the record has been finalized some time ago. History 2009 June 4th : Added samples and ADO.Net comparison 2009 June 1st : First DbfDotNet (C#) release. 2000 May 21st : I wrote my first database engine, it is called tDbf and works on Delphi. License This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

.Net(C#)操作DBF心得

最近做了一个小项目,关于读写DBF的,把心得写下来,分享一下 首先感谢bluesky521,很多关于DBF的心得,都是从他的博客学到的,我这里只是整理一下而已(bluesky521 Blog地址:http://www.cnblogs.com/bluesky521/archive/2006/10/22/536788.html)  关于读取DBF主要分ODBC与OLEDB这两种

lukali的专栏 4145

VFPOLEDBSetup.msi + vfpoledb.msm

c# win7 64位系统操作dbf的驱动文件,微软官网上有下。

初识机会网络仿真器ONE中ExternalMovement移动模型(导入外部移动数据)

最近半个月一直在研究ONE中关于ExternalMovement移动模型的源代码,在网上几乎没有找到相关的资料,很是苦恼,如果有共同研究方向的小伙伴欢迎联系我,共同讨论进步。 下面记录一下几点感悟: 1、使用外部数据的前提是在ONE的配置文件中增加及修改相关代码: Group.movementModel = ExternalMovement ExternalMovement.file = move...

qq_36974792的博客 659

1.基于C#的Dbf读写(文件结构概述)

/ 获取更新日期:年 1// 获取更新日期:月 2// 获取更新日期:日 3try//转换为日期catch//获取文件的最后一次编辑时间通过三次的ReadByte()方法依次读取出年月日,并转换为对应的日期。当出错时就以文件的最后编辑时间作为参照。

我就是那个帕吉 3266

Uds诊断自动化(CANoe.diva应用)

(7)其他配置选择可以保持默认(一般情况下,DTC以及31服务、下载服务需要另外测试)。(1)打开CANoe.Diva软件,并新建Diva工程。(2)设置工程名和保存位置;在"Specification file"(3)测试案例打开后的界面如下,可以对要进行测试的案例进行勾选,(可查看下角的进度条)后;(3)等待DIva工程的生成;(4)接下来是修改Diva工程选项,如下图点击。,如用例间的时间间隔、复位等待时间等。,即可打开导入的测试工程。,即可生成测试用例。(1)在CANoe中。

LIUJIAAAAA的博客 3443

C#操作dbf

转自http://dotnet.chinaitlab.com/CSharp/838298.html 由于历史的原因,我国的上交所和深交所使用的还是dbf文件来进行行情数据的分发,关于卫星报盘系统,可以参考:http://maltig.itpub.net/post/12165/195151 这个博客中关于证券公司信息化的文章写的还是相当不错的。上交所使用的是show2003.dbf文件,而深交...

weixin_34413802的博客 353

【Zephyr 系列 29】低功耗调试指南:电流测量、系统睡眠与功耗分析

Zephyr低功耗调试指南(150字摘要) 针对物联网设备续航需求,本文解析Zephyr低功耗调试方法:1️⃣ 机制:启用PM子系统和tickless idle,配置睡眠策略;2️⃣ 测量:推荐功耗分析仪捕捉μA级电流波动;3️⃣ 优化:管理唤醒源(如GPIO/RTC)、调整BLE广播/连接参数,挂起闲置外设;4️⃣ 分析:建立功耗文档,对比不同模式电流(如待机0.6mA vs广播3.2mA)。强调低功耗需系统性设计,初期即需纳入测试流程。下期将探讨Zephyr OTA升级实现。

hemoparrot的专栏 1180

雷达回波仿真

文章目录前言一、基础理解1.慢时间维度和快时间维度2.脉冲压缩3.MTI4. 脉冲多普勒处理5.cacfar检测二、具体流程1.产生回波信息加入目标时延以及噪声2.解调回波得到基带信号3.脉冲压缩 MTI MTD cafar检测 前言 雷达算法仿真学习,主要流程包括生成目标回波,将基带信号加在载波上其次是加上目标信息和干扰信号后发射,解调回波信号得到基带信号然后MTI,MTD,最后再检测。 一、基础理解 1.慢时间维度和快时间维度 连续M个脉冲回波经过相干解调之后的基带数据形成的一个二维数据矩阵,.

qq_42961235的博客 1万+

vfp和python比较_vfp-和vfp相关的内容-阿里云开发者社区

Netbeans配置Java SE嵌入式平台(树莓派)1.配置平台来源:http://www.cnblogs.com/xiaobo-Linux/p/7955769.html2. 选择远程3. 填写信息JRE 路径是树莓派上的路径:how?sudo update-alternatives --display java输...文章小波linux2017-12-021034浏览量ARMCC和GCC编译A...

weixin_39673293的博客 1046

【YOLOv8改进[Conv]】使用OREPA助力V8更优秀

使用OREPA助力V8更优秀,降低训练成本,在不引入任何推理时间成本的情况下提高深度模型的性能。

静谧、淡雅 1918

C#获取dbf文件内容到datatable

昨天做的一个小工具,通过用户选择的shp文件,读取到datatable中,然后插入到Oracle数据库中,故总结一下 C#获取dbf文件内容,有三种方式 方法一:利用ODBC读取 方法二:通过VFP读取,不过这个需要在用户的电脑上安装CPFOLEDB.1的驱动 方法三:通过文件流的方式,不需要任何辅助,目前我用的是这个 具体代码,且等我晚上更新,不过代码量很多,我应该会直接提供一个下载地

odelia的博客 1414

PD3.0详解 协议的时序timer和counter计数

前面介绍了关于PD协议的交互,还有协议层数据各个字段的含义,但是一直没有系统的说关于协议的时序,还有部分counter,就是协议允许发送的次数,或者一些其他计数。 大师匈今天说一下关于这方面的东西,这些东西都是非常关键的东西,但是相对来说PD标准内对时序的要求还是比较宽泛,非常容易能够实现这样的要求。 Timer 1、CRCReceiveTimer 0.9~1.1ms 表示每次通信收到goodcrc的时间,必须在这个时间内收到goodcrc, 我们要注意不是在0.9~1.1ms内,而是第三方可以在这个范

大师匈的博客 5007

网络系统管理专栏-配套练习+知识点详解

网络系统管理专栏-配套练习+知识点详解

bfq05234214的博客 682

使用C#读取dbf行情文件

由于历史的原因,我国的上交所和深交所使用的还是dbf文件来进行行情数据的分发,关于卫星报盘系统,可以参考:http://maltig.itpub.net/post/12165/195151 这个博客中关于证券公司信息化的文章写的还是相当不错的。上交所使用的是show2003.dbf文件,而深交所使用的是SJSHQ.DBF,这种文件可以使用Visual FoxPro直接打开,查看其内容。接下来说说怎

优快云深蓝居 2881

手把手教你YOLOv8/YOLOv11分割训练自己数据集和推理,并教你使用Labelme工具标注数据(附分割网络结构图)

YOLOv8-seg 和 YOLOv11-seg 都是一种高效实例分割算法,实例分割模型的输出是一组勾勒出图像中每个物体的遮罩或轮廓,以及每个物体的类标签和置信度分数。当你不仅需要知道物体在图像中的位置,还需要知道它们的具体形状时,实例分割就非常有用了,功能非常强大,可以应对各种视觉任务。 YOLOv11-seg 则在 YOLOv8-seg 基础上进一步魔改了模型架构,相对分割速度可能更快,其他指标性能有待测试。实例分割可以用于自动驾驶、医疗图像处理、智能农业监控等领域。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 4475

生成dbf文件

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33834910的博客 983

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

.net DBF文件读取,删除标记记录读取

由于历史的原因,我国的上交所和深交所使用的还是dbf文件来进行行情数据的分发,关于卫星报盘系统,可以参考:http://maltig.itpub.net/post/12165/195151这个博客中关于证券公司信息化的文章写的还是相当不错的。上交所使用的是show2003.dbf文件,而深交所使用的是SJSHQ.DBF,这种文件可以使用Visual FoxPro直接打开,查看其内容。接下来说说怎么

oydu的专栏 2162

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

C#下操作Visual Fox数据库

最近有个项目需要操作Visual Fox数据库 .net平台若是需要操作数据库需要安装一个类似于操作工具的软件,最后我会添加下载地址,没想到vf数据库现在还有这么多应用,这个数据库我上初中的时候就见过了,现在想想大概是十几年之前了吧。 回归正题 安装工具之后在C#下操作代码如下所示: public static DataSet ReturnDataset() {

pridescc的专栏 1406

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

将DBF文件导入到其它数据库

说明:一直在网上找在asp.net(C#)中将DBF文件导入到SQL Server的方法,均不成功!后来找到网友sunrongxa(西康指挥部.net)在一个贴子中的解答,参照成功完成了。特此摘录!非常感觉网友sunrongxa(西康指挥部.net)。  注意:DBF要foxpro格式     vfp的先转成foxpro。in   vfp:   use   database   ent

ylj1079的专栏 1242

C# 读取dbf文件中的数据到datatable中

C#读取dbf文件中的数据到datatable中

withdreams的专栏 5336
上一篇: java中Url中文参数转码解决方案
下一篇: js获取网站跟路径
xddouble
博客等级 码龄21年 18粉丝 37原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值