iT邦幫忙

0

C# CRUD CRD都正常 U這樣寫卻'並未將物件參考設定為物件的執行個體'

        public int BOOS097(SqlConnection conn, SqlTransaction Xran)
        {
            int returnCode = 0;
            try
            {
                SqlCommand cmd = new SqlCommand();
                string sqlstr =
                @"UPDATE WOWWORD SET ORG = @org,DEPARTMENT = @department,USER_ID = @user_id WHERE SEQID = @seqid";

                cmd.Connection = conn;
                cmd.Transaction = Xran;
                cmd.CommandText = sqlstr;
                cmd.Parameters.AddWithValue("@org", in_wow_org[0].ORG);
				cmd.Parameters.AddWithValue("@department", in_wow_org[0].DEPARTMENT);
				cmd.Parameters.AddWithValue("@user_id", in_wow_org[0].USER_ID);
				cmd.Parameters.AddWithValue("@seqid", in_wow_org[0].SEQID);
                

                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(out_wow_org, "keys");
                count = out_wow_org.Tables["keys"].Rows.Count;
                returnCode = 0;
            }

CRD功能都可以只有updata不能 也只有sql的地方 本身沒有錯誤訊息但到postman時會出現'並未將物件參考設定為物件的執行個體' 逐步執行也看不出個問題在哪 是寫法錯誤了? 求指點

看更多先前的討論...收起先前的討論...
fillano iT邦超人 1 級 ‧ 2019-11-12 14:27:28 檢舉
是到那一行出錯?
hyert iT邦新手 5 級 ‧ 2019-11-12 14:30:46 檢舉
沒錯誤 但我使用postman測試無法執行
這語法我下在sql也是正確的
fillano iT邦超人 1 級 ‧ 2019-11-12 14:37:40 檢舉
那個錯誤通常是有變數或啥的沒賦值就拿來用,所以看看postman是否有傳錯或漏傳囉
YoChen iT邦新手 2 級 ‧ 2019-11-12 14:45:31 檢舉
您可以把錯誤畫面貼出來看看~
優悠 iT邦新手 4 級 ‧ 2019-11-13 09:10:50 檢舉
先進DeBUG,然後設中斷點在最開始,再用F10慢慢查吧!
2
小魚
iT邦大師 1 級 ‧ 2019-11-12 15:45:06

既然有 try / catch 了
在catch中斷抓的到東西嗎?
錯誤訊息可以看的出錯在哪一行.

看更多先前的回應...收起先前的回應...
hyert iT邦新手 5 級 ‧ 2019-11-12 17:13:03 檢舉

da.Fill(out_wow_org, "keys");
count = out_wow_org.Tables["keys"].Rows.Count;
應該在這 逐步這=0 在想怎麼改 Fill改成Update錯誤變成Update 找不到 TableMapping['WOWWORD']

小魚 iT邦大師 1 級 ‧ 2019-11-12 19:31:38 檢舉

沒有什麼應該,
如果連錯在哪都不確定,
只有葉先生能夠回答你了.

小魚 iT邦大師 1 級 ‧ 2019-11-12 19:33:31 檢舉

忽然想到一個,
你確定有 in_wow_org[0] 嗎?
如果in_wow_org的長度是0就會噴錯了.

小魚 iT邦大師 1 級 ‧ 2019-11-12 19:36:56 檢舉

tw70126_tw 君說的對,
UPDATE不應該用DataAdapter,
話說你的INSERT跟DELETE是怎麼寫的?
下面這樣子試試

try
{
    SqlCommand cmd = new SqlCommand();
    string sqlstr =
    @"UPDATE WOWWORD SET ORG = @org,DEPARTMENT = @department,USER_ID = @user_id WHERE SEQID = @seqid";

    cmd.Connection = conn;
    cmd.Transaction = Xran;
    cmd.CommandText = sqlstr;
    cmd.Parameters.AddWithValue("@org", in_wow_org[0].ORG);
    cmd.Parameters.AddWithValue("@department", in_wow_org[0].DEPARTMENT);
    cmd.Parameters.AddWithValue("@user_id", in_wow_org[0].USER_ID);
    cmd.Parameters.AddWithValue("@seqid", in_wow_org[0].SEQID);

    returnCode = cmd.ExecuteNonQuery();
}
1
sion
iT邦新手 4 級 ‧ 2019-11-12 15:48:50

通常會發生並未將物件參考設定為物件的執行個體
是因為你宣告的物件在記憶體空間並沒有位址,白話就是沒有給定初始值
乍看之下應該是這個物件吧in_wow_org
你要不要先確認這幾個欄位值有沒有null

in_wow_org[0].ORG
in_wow_org[0].DEPARTMENT
in_wow_org[0].USER_ID
in_wow_org[0].SEQID
out_wow_org
hyert iT邦新手 5 級 ‧ 2019-11-12 17:14:02 檢舉

都有值

0
海綿寶寶
iT邦大神 1 級 ‧ 2019-11-12 16:55:19

我猜是
in_wow_orgout_wow_org的原因

hyert iT邦新手 5 級 ‧ 2019-11-12 17:13:51 檢舉

in 我看都有讀到 開始我也以為 但應該跟out有關

1
tw70126_tw
iT邦新手 5 級 ‧ 2019-11-12 18:15:16

你用UPDATE ,回來的DT是NULL不是很合理嗎XDD

小魚 iT邦大師 1 級 ‧ 2019-11-12 19:34:18 檢舉

你突破盲腸了!

我要發表回答

立即登入回答