簡體   English   中英

ConstraintException但我不知道為什么!

[英]ConstraintException but i don't know why!

當我使用一組特定的參數運行以下代碼時,出現了未處理的約束異常:

using (MySqlConnection connMySql = new MySqlConnection(global.g_connString))
            {

                MySqlCommand cmd = connMySql.CreateCommand();

                cmd.CommandText = this.Query;

                connMySql.Open();

                using (MySqlDataReader dr = cmd.ExecuteReader())
                {

                    DataTable dt = new DataTable();
                    dt.Load(dr);
                    return dt;
                }

但是,如果我直接運行查詢(即不在我的應用程序上而是使用查詢瀏覽器),則看不到任何空值或任何會產生錯誤的內容。

它必須是特定於數據的,就像我更改查詢的日期范圍一樣,它可以正常工作。

任何人有任何想法嗎?

謝謝,

PS查詢如下:

SELECT COALESCE(ti.FIRST_NAME, 'Not Assigned') AS 'Technician',wo.WORKORDERID 'Request ID',aau.FIRST_NAME 'Requester', wo.TITLE 'Subject', rrs.resolution As Resolution, (wo.COMPLETEDTIME/1000) 'TimeStamp'
                                            FROM WorkOrder_Threaded wot
                                            INNER JOIN WorkOrder wo ON wot.WORKORDERID=wo.WORKORDERID
                                            LEFT JOIN SDUser sdu ON wo.REQUESTERID=sdu.USERID
                                            LEFT JOIN AaaUser aau ON sdu.USERID=aau.USER_ID
                                            LEFT JOIN WorkOrderStates wos ON wo.WORKORDERID=wos.WORKORDERID
                                            LEFT JOIN SDUser td ON wos.OWNERID=td.USERID
                                            LEFT JOIN AaaUser ti ON td.USERID=ti.USER_ID
                                            LEFT JOIN RequestResolution rrs ON wo.WORKORDERID=rrs.REQUESTID
                                        WHERE (wo.COMPLETEDTIME != 0) AND (wo.COMPLETEDTIME != -1) AND (wo.COMPLETEDTIME IS NOT NULL)
                                            AND wo.COMPLETEDTIME >= (UNIX_TIMESTAMP(TIMESTAMP('" + sdChartRange.From + @"')) * 1000)
                                            AND wo.COMPLETEDTIME <= (UNIX_TIMESTAMP(TIMESTAMP('" + sdChartRange.To + @"')) * 1000)
                                            AND wot.THD_WOID=wot.WORKORDERID
                                        ORDER BY Technician ASC

其中sdChartRange.From和.To是日期時間值。

嘗試以另一種方式加載DataTable,以避免來自數據庫的意外約束。 在函數中嘗試此操作。

MySqlCommand cmd = connMySql.CreateCommand();
cmd.CommandText = this.Query;

connMySql.Open();

DataTable dataTable;

// Create data adapter
SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);

// Populate dataTable based on DB query
da.Fill(dataTable);
da.Dispose();

return dataTable;

另請參見: C#SQLite與DataTable一起拋出ConstraintException

不知道表的架構和調用它的查詢就很難說。 您確定它們是絕配嗎?

我建議您致電dataTable.GetErrors(); 要獲取錯誤行,然后檢查/記錄每個錯誤行的RowError屬性。

暫無
暫無

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

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