簡體   English   中英

使用ODBC的Insight.Database過程調用失敗

[英]Insight.Database procedure call using ODBC fails

我正在通過ODBC提供程序在C#中使用Insight.Database連接到iSeries DB2數據庫。 在db2中有一個存儲的過程稱為InsertBeer。 以下所有通話均效果很好!:

List<Beer> beers = conn.QuerySql<Beer>("SELECT * FROM Beer WHERE Typee = @Typee", new { Typee = "IPA" }).ToList();

var beer = new Beer { ID=41,Typee="Medium", Description = "From dotNet Neither light or dark"};

conn.ExecuteSql("INSERT INTO Beer VALUES (@ID, @Typee, @Description)", new { ID = 4, Typee = "Medium", Description = "From dotNet Neither light or dark" });

conn.ExecuteSql("CALL INSERTBEER (@ID, @Typee, @Description) ", new { ID = 4, Typee = "MediumOD", Description = "From dotNet Neither light or dark" });

conn.ExecuteSql("INSERT INTO Beer VALUES (@ID, @Typee, @Description)", beer);

太棒了,我真的在研究這個微型ORM。 這場戰斗已經贏了一半,上面的調用中的啤酒對象節省了很多手工參數綁定。 但是我不想在對InsertBeer存儲過程的調用中鍵入LHS參數。 我相信這是使用Insight Execute()方法避免的水暖工作類型。 可悲的是,這些調用不起作用:

conn.Execute("INSERTBEER", beer);

我也嘗試過:

conn.Execute("insertbeer", new Beer {ID = 4, Typee = "Medium", Description = "From dotNet Neither light or dark"}, CommandType.StoredProcedure, true, Int32.MaxValue, null, beer);   

我得到的錯誤是:

{“錯誤[42000] [IBM] [系統i Access ODBC驅動程序] [DB2 for i5 / OS] SQL0104-令牌INSERTBEER無效。有效令牌:(CL結束GET SET CALL DROP FREE HOLD LOCK OPEN WITH。”

任何想法,不勝感激!

我沒有嘗試使用該版本的db2進行洞察,但是讓我看看是否可以提供幫助。

1)您是否嘗試在Insight.database.providers.db2中使用db2提供程序?

2)您可以直接在odbc / .net上發布工作示例嗎? 然后也許我可以看到有什么區別。

最好在github上打開一個問題。 我嘗試解決那里的未解決問題(盡管我落后於他們)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM