第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Visual FoxPro 9 C# OleDbAdapter 插入 - 功能不可用

Visual FoxPro 9 C# OleDbAdapter 插入 - 功能不可用

C#
慕碼人2483693 2021-11-28 16:30:38
如何newid("tablename")使用Microsoft 的 OLE DB Provider for Visual Foxpro 9.0的主鍵插入 FoxPro 表?我有兩個表,一個主鍵的默認值是newid("tablename"),另一個表的數(shù)據(jù)類型設(shè)置為Integer (AutoInc)。當我嘗試insert在newid桌子上運行相同的命令時,我得到以下信息OleDbException:Feature is not available當我以主鍵insert在表上運行時Integer (AutoInc),它可以工作。這是我試圖執(zhí)行的代碼:public void InsertData(){    using(var connectionHandler = new OleDbConnection("Provider=VFPOLEDB.1;Data Source=\"C:\\path\\to\\db.dbc\";"))    {        var insertStatement = @"INSERT INTO mytable (mycol) values (?)";        var insertCommand = new OleDbCommand(insertStatement, connectionHandler);        insertCommand.Parameters.Add("mycol", OleDbType.Char).Value="blue";        connectionHandler.Open();        insertCommand.ExecuteNonQuery();        connectionHandler.Close();    }}insert由于此newid()默認值,OLE 是否有任何原因無法執(zhí)行?解決我的問題的另一種情況是,如果我id在insert子句中手動指定了一個。前任:var insertStatement = @"INSERT INTO mytable (id, mycol) values (?, ?)";insertCommand.Parameters.Add("id", OleDbType.Integer).Value = 199;insertCommand.Parameters.Add("mycol", OleDbType.Char).Value = "blue";此外,我可以select * from tablename在這張桌子上運行 a 。select 片段:public DataTable GetData(){    var myData = new DataTable();    using(var connectionHandler = new OleDbConnection("Provider=VFPOLEDB.1;Data Source=\"C:\\path\\to\\db.dbc\";"))    {               var da = new OleDbDataAdapter();        var mySQL = "select * from mytable";        var myQuery = new OleDbCommand(mySQL, connectionHandler);        connectionHandler.Open();        da.SelectCommand = myQuery;        da.Fill(myData);        connectionHandler.Close();    }    return myData;}
查看完整描述

2 回答

?
智慧大石

TA貢獻1946條經(jīng)驗 獲得超3個贊

它顯示了罪魁禍首是什么。


盡管我的神經(jīng)傾向于對該代碼進行許多更正,但我只會進行足夠的修改以使其在 VFP 和 C# 中都能正常工作:


function newId

parameter thisdbf

regional keynm, newkey, nOldSelect, lDone

keynm=padr(upper(thisdbf),50)

nOldSelect=select()

lDone=.f.

do while not lDone

    select keyvalue from main!idkeys where keyname=keynm into array akey

    if _tally=0

        insert into main!idkeys (keyname) value (keynm)

        loop

    endif

    newkey=akey+1

    update main!idkeys set keyvalue=newkey where keyname=keynm and keyvalue=akey

    if _tally=1

        lDone=.t.

    endif

enddo

Select (m.nOldSelect)

return newkey

改變的部分只與那個有關(guān)(if !empty(...)) block。


查看完整回答
反對 回復(fù) 2021-11-28
?
白板的微信

TA貢獻1883條經(jīng)驗 獲得超3個贊

問題是存儲過程中的這個變量聲明行:

regional keynm, newkey, cOldSelect, lDone

'regional' 關(guān)鍵字是舊的 FoxPro 2.6 for DOS\Windows 的保留。它僅用于由屏幕構(gòu)建器工具生成的程序。顯然,它仍然潛伏在 Visual FoxPro 中以支持將舊的 FoxPro 2.6 項目遷移到 Visual FoxPro 的功能,因為代碼在 VFP 中運行良好。但是 OLEDB 驅(qū)動程序不支持它。

無論如何,您需要更改存儲過程以使用:

local keynm, newkey, cOldSelect, lDone

... 并重新編譯它,為此您將需要 Visual FoxPro。確保沒有 OLEDB 或其他連接到它,然后在 Visual FoxPro 命令窗口中:

compile c:\path\to\mydatabase.dbc


查看完整回答
反對 回復(fù) 2021-11-28
  • 2 回答
  • 0 關(guān)注
  • 342 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號