C#编程向VFP数据库中插入Numeric型的值(foxpro,dbf)

    
        C#编程向VFP数据库中插入Numeric型的值 
 
  最近做一个C#程序,实现将SQLServer中的数据导入到Visual Foxpro6.0的.dbf数据文件中。更新Numeric类型字段的值时出现错误:
System.Data.Odbc.OdbcException:ERROR [22018] [Microsoft][ODBC Visual FoxPro Driver]Data type mismatch.
原程序类似如下:
//------------------------------------------------------------------------
//到.dbf数据库文件的ODBC连接字符串
string strOdbcConn = @" DRIVER=Microsoft Visual FoxProDriver;UID=;Collate=Machine;BackgroundFetch=Yes;      Exclusive=No;SourceType=DBF;SourceDB="+ strFilePath +";";
//获取DataTable
string strSQL = "Select * From table1 ;
DataSet dataSet = new DataSet();   
OdbcDataAdapter odbcDA = new OdbcDataAdapter(strSQL,strOdbcConn);
odbcDA.Fill(dataSet,"table1");
DataTable table = dataSet.Tables["table1"];
//向DataTable中添加记录    
DataRow row = table.NewRow();
row["DateFrom"] = Convert.ToDateTime("2005-09-10");//日期型字段
row["Num"]      = Convert.ToDecimal(10);//Numric(16,0)型字段
table.Rows.Add(row);
//更新到数据库中
OdbcCommandBuilder builder = new OdbcCommandBuilder(odbcDA);
odbcDA.InsertCommand = builder.GetInsertCommand();
odbcDA.Update(dataSet,"table1");
//----------------------------------------------------------------
  程序运行时,在对row["Num"]赋值时并不出错,执行到oodbcDA.Update(dataSet,"table1");时出错,根源就在于对row["Num"]的赋值,实在找不到好的解决办法。(谁有直接对row["Num"]的赋值的好办法,欢迎赐教
  后来,用SQL语句测试,如:update table1 set Num=10;执行正确,就想用SQL语句insert解决,经测试可行。
SQL-Insert语句如下:
  Insert Into table1(DateFrom, Num) Values({^2005-09-10},10)
  程序相应的改成如下的了:
//------------------------------------------------------------------
string strOdbcConn = @" DRIVER=Microsoft Visual FoxProDriver;UID=;Collate=Machine;BackgroundFetch=Yes;      Exclusive=No;SourceType=DBF;SourceDB="+ strFilePath +";";
OdbcConnection odbcConn = new OdbcConnection(strOdbcConn);
string sqlInsert = "Insert Into table1(DateFrom, Num) Values({^2005-09-10},10)";
OdbcCommand odbcComm = new OdbcCommand(sqlInsert,odbcConn);
odbcComm.Connection.Open();
odbcComm.ExecuteNonQuery();
odbcConn.Close();
//----------------------------------------------------------------

========================================================
其它关于VFP的信息:

1.VFP-SQL语句
----插入日期值:
insert into 1able1(日期字段) values({^2005-09-10})
----不支持如下语句(insert-select):
insert into table1
select * from table2

2.MS OLE DB Provider for VFP :
微软网站:http://www.microsoft.com/downloads/details.aspx?FamilyID=e1a87d8f-2d58-491f-a0fa-95a3289c5fd4&DisplayLang=en提供了Microsoft OLE DB Provider for Visual FoxPro 9.0,会对编写访问VFP数据的程序有帮助。

3.更多微软Visual FoxPro资源:
http://www.microsoft.com/downloads/info.aspx?na=13&p=1&SrcDisplayLang=en&SrcCategoryId=&SrcFamilyId=&u=%2fdownloads%2fbrowse.aspx%3fdisplaylang%3den%26productID%3dE794F2FC-0425-40AD-A292-39490679FA65

4.记住这个连接字符串:
string strOdbcConn = @" DRIVER=Microsoft Visual FoxProDriver;UID=;Collate=Machine;BackgroundFetch=Yes;      Exclusive=No;SourceType=DBF;SourceDB=D:\DataDBF\table1.dbf;";

===============================================================

夏春涛的blog: http://summerrain.cnblogs.com/
email: xchuntao@163.com   或   xchuntao@gmail.com
QQ: 23106676
msn: xchuntao@163.com

 

 

时间: 2024-11-09 06:25:00

C#编程向VFP数据库中插入Numeric型的值(foxpro,dbf)的相关文章

C#编程向VFP数据库中插入Numeric型的值

最近做一个C#程序,实现将SQLServer中的数据导入到Visual Foxpro6.0的.dbf数据文件中.更新Numeric类型字段的值时出现错误: System.Data.Odbc.OdbcException:ERROR [22018] [Microsoft][ODBC Visual FoxPro Driver]Data type mismatch. 原程序类似如下: //----------------------------------------------------------

使用ejb往oracle数据库中插入Date型数据,数据库中记录始终是yyyy-mm-dd

问题描述 使用ejb往oracle数据库中插入Date型数据,数据库中记录始终是yyyy-mm-dd 使用ejb往oracle数据库中插入Date型数据,数据库中记录始终是yyyy-mm-dd,但是在插入前我已经转成了yyyy-mm-dd HH:mm:ss格式,插入到数据库中时分秒就掉了,怎么回事 解决方案 应该用timestamp类型吧 解决方案二: http://blog.sina.com.cn/s/blog_af4f958e01015fmx.html 解决方案三: 也许是你使用的界面工具的

sql server-C#向SQLServer数据库中插入数据,没有反应

问题描述 C#向SQLServer数据库中插入数据,没有反应 C#向SQLServer数据库中插入数据,没有反应,代码如下: string conn, sql, strxm,strxh,strxb,strlxfs; strxm = textBox1.Text; strxh = textBox2.Text; strxb = textBox3.Text; strlxfs = textBox4.Text; conn = "Server=.;Database=13rj;Trusted_Connectio

mssqlserver导入到数据库中插入文字乱码问题解决方法

mssqlserver导入到数据库教程中插入文字乱码问题解决方法,先看一下我的导入代码,应该是没有任何问题了. private void btninsert_Click(object sender, EventArgs e) { if (odimport.ShowDialog() == DialogResult.OK)//准备接收文件: { using (FileStream filestream = File.OpenRead(odimport.FileName)) { using (Stre

access 如何编程打开其他数据库中的窗体?

access|编程|数据|数据库 如何编程打开其他数据库中的窗体?    简述:如何编程打开其他数据库中的窗体?    问题: 如何编程打开其他数据库中的窗体,使用完毕后退回?我新建了一个数据库,里面只有一个Form,我想在Form上添加几个按钮,每个按钮上对应一个Click事件,事件的动作就是打相应的Access数据库,并执行该数据库中的Menu表单,关闭数据库后又回到有按钮的Form来.   回答: Function OpenOhterMDB()    Dim objApp As New A

access编程打开其他数据库中的窗体

简述:如何编程打开其他数据库中的窗体? 问题: 如何编程打开其他数据库中的窗体,使用完毕后退回? 我新建了一个数据库,里面只有一个Form,我想在Form上添加几个按钮,每个按钮上对应一个Click事件,事件的动作就是打相应的Access数据库,并执行该数据库中的Menu表单,关闭数据库后又回到有按钮的Form来. 回答: function openohtermdb() dim objapp as new access.application objapp.opencurrentdatabase

java-当用JDBC向数据库中插入数据或从数据库中提取数据时,为何有时中文字符会显示为乱码?

问题描述 当用JDBC向数据库中插入数据或从数据库中提取数据时,为何有时中文字符会显示为乱码? 当用JDBC向数据库中插入数据或从数据库中提取数据时,为何有时中文字符会显示为乱码? 怎么才能解决问题,跟jdbc driver Manager的设置有关系吗? 解决方案 数据库字符集 与 页面编码 都使得 是 uft-8?得统一 解决方案二: 建议编码格式采用UTF-8的格式 解决方案三: 在使用数据的每一个节点上,其编码方式必须要一致否则就会出现乱码.特别是使用MySQL时,客户端,连接器.数据库

javascript代码如何向数据库中插入精确到时分秒的date数据?

问题描述 javascript代码如何向数据库中插入精确到时分秒的date数据? 插入到数据库中发现只有年月日..时分秒为0. 有没有办法插入精确到时分秒的日期数据?? 解决方案 从后台给时间呗.干嘛要在前台给 解决方案二: 可以参考这个javascript datetime时间操作函数http://www.111cn.net/wy/js-ajax/39366.htm 解决方案三: 你后台的是什么数据库,数据库字段是什么?不行的话,可以使用timestamp时间戳,转成EPOCH来存储. 解决方

sql2005-vc++6.0 MFC SQL2005,我想通过按不同的按钮向数据库中插入不同数值

问题描述 vc++6.0 MFC SQL2005,我想通过按不同的按钮向数据库中插入不同数值 void CAttendance::OnCapture(BOOL ActionResult, const VARIANT FAR& ATemplate) { if (Identify == 0)//比对指纹(1:N) { if (Identifys(m_zkeng.GetTemplateAsString())) { InsertCheck(m_zkeng.GetTemplateAsString());