iT邦幫忙

0

Object reference not set to an instance of an object 問題 ASP.Net

https://ithelp.ithome.com.tw/upload/images/20200604/20127694YWRsLjaLJl.pnghttps://ithelp.ithome.com.tw/upload/images/20200604/2012769439lJC4nmFI.png
問題如圖,希望各位大大們能指點迷津,任何的回答可能都是我解決的一小步。
這隻程式比較早以前的版本跑都沒問題,用新的版本compile後都擲回例外,能爬的文都爬過了,該設的值也都設了,求助無門實在無解只好上來求助,希望鞭小力點,小弟真的菜~謝謝
附上全部的程式碼

w4560000 iT邦新手 4 級 ‧ 2020-06-05 09:50:29 檢舉
你沒有Ferryman.DATA 的source code?
這樣看不出來 db.DoTransaction裡面做了甚麼事,
你說的版本是指這支dll的版本還是說.net Framework的版本?
公司整理source code不太完善還真沒有...
版本是整個專案的版本 後來才發現有在git 下載新版下來反而不能用
已補上ferryman說明書
由考古說明來看
缺少了db.AddCommand(strSQL);這列

1 個回答

0
海綿寶寶
iT邦大神 1 級 ‧ 2020-06-04 22:20:56

第一個猜測是

DBClass db = new DBClass(General.DataBaseType.MSSQL, "DB2");

這列沒有成功
也就是 db = null
以致在 db.doTransaction 時發生錯誤

第一個怪怪的
DataBaseType.MSSQL 後面的名字卻是 DB2
有點拿明朝的劍斬清朝的官的味道

第二個怪怪的
Line 60 設定了 strSQL 的值
之後就再也沒用到
如此 DB.doTransaction Do 的到底是什麼 Transaction ?

第三個怪怪的
AddSqlParameter 一般是把參數 bind 給 Prepared SQL statement
貴公司程式卻 bind 給 db (DBClass)

看更多先前的回應...收起先前的回應...
fillano iT邦超人 1 級 ‧ 2020-06-05 09:55:51 檢舉

看起來要先把strSQL加進來,之後bind parameter才有意義。可能漏了這個,然後因為lazy操作,實際上bind的動作會等到DoTransaction時才做,這時找不到要bind parameter的sql,然後跳出null instance錯誤。

catch錯誤然後印出exception的InnerException的資訊應該會更有幫助。

感覺不像是完整的程式碼
/images/emoticon/emoticon06.gif

由考古說明來看
缺少了db.AddCommand(strSQL);這列

以程式碼的空列習慣來猜
應該是補在第 63 列的位置
/images/emoticon/emoticon28.gif

已補上Ferry Man說明書,因為這是前人留下的程式碼...我也讀得不是很懂..這網站最近一直有bug出現所以才想辦法弄懂好來debug

感謝海綿寶寶大大,但加上了還是一樣錯誤在同一行擲回錯誤,我在想如果程式碼沒有問題有沒有可能是.net 或dll版本不符之類的

這隻程式比較早以前的版本跑都沒問題,用新的版本compile後都擲回例外

那就用比較早以前的版本來跑就好了
你的「新的版本」有可能是未完成版/改到一半版

w4560000 iT邦新手 4 級 ‧ 2020-06-05 11:30:38 檢舉

真的沒辦法的話
可以試試用ILSpy反組譯 Ferryman.DATA
新、舊 兩版的dll,看一下哪邊有更動

目前看來還是只能用舊版本的來跑了 感謝各位大大的回答!
Ferryman看完居然都沒有更動

我要發表回答

立即登入回答