簡體   English   中英

使用TableAdapter將記錄插入SQL Server Compact數據庫

[英]Inserting a record into SQL Server Compact database using TableAdapter

我是C#和SQL Server的新手,所以如果我錯過一些顯而易見的事情,請多多包涵。

我正在嘗試編寫一個程序,該程序從LAN接收數據數據並將其存儲到本地數據庫中。 還有一個用於顯示某些數據的GUI。 我正在使用VS2010和SQL Server Compact v3.5。 我已經能夠創建一個Windows窗體應用程序,該應用程序連接到數據庫並顯示/更新表,因此我相信數據庫已正確連接。

我有一個后台工作程序,它從LAN接收數據,現在我希望后台工作程序更新數據庫中的表之一。 我使用了本指南:

http://msdn.microsoft.com/en-us/library/ms233812.aspx

創建以下代碼部分:

           MyDataSet.MeasurementRow newMeasurementRow;
           newMeasurementRow = dataset1.Measurement.NewMeasurementRow();
           newMeasurementRow.ChannelNo = n;
           newMeasurementRow.DeviceID = DeviceID;
           newMeasurementRow.Value = f;
           newMeasurementRow.TimeStamp = DateTime.Now;

          try  
          {                                                                 
               this.dataset1.Measurement.Rows.Add(newMeasurementRow);
               this.measurementTableAdapter.Update(this.dataset1.Measurement);
               Console.WriteLine("Success ");
          }
          catch (Exception e)
          {
                Console.WriteLine("Error..... " + e.StackTrace);
                throw;            
          } 

dataset1measurementTableAdapter在代碼的前面創建,其代碼如下:

    MyDataSet dataset1 = new MyDataSet();
    MyDataSetTableAdapters.MeasurementTableAdapter measurementTableAdapter =
    new MyDataSetTableAdapters.MeasurementTableAdapter(); 

MyDataSet和表適配器類是由“添加新數據源向導”創建的。 Measurement是我要添加到數據庫中的表的名稱。

但是,在運行此方法時,調用Update方法時會得到以下輸出:

類型為“ System.Data.SqlServerCe.SqlCeException”的第一次機會異常發生在System.Data.SqlServerCe.dll中
類型“ System.Data.SqlServerCe.SqlCeException”的第一次機會異常發生在System.Data.dll中

錯誤.....,位於System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgs rowUpdatedEvent,BatchCommandInfo [] batchCommands,Int32 commandCount)
在System.Data.Common.DbDataAdapter.UpdatedRowStatus(RowUpdatedEventArgs rowUpdatedEvent,BatchCommandInfo [] batchCommands,Int32 commandCount)中
在System.Data.Common.DbDataAdapter.Update(DataRow [] dataRows,DataTableMapping tableMapping)
在System.Data.Common.DbDataAdapter.UpdateFromDataTable(DataTable dataTable,DataTableMapping tableMapping)
在System.Data.Common.DbDataAdapter.Update(DataTable dataTable)

如果有人可以幫助我解釋這些錯誤或就可能導致該問題的原因向我指出正確的方向,將不勝感激。

最好嘗試將newMeasurementRow添加到屬於DataSet的DataTable中(先創建一個,然后添加到數據集)。 看起來dataadapter無法將行僅作為數據集的一部分來解析,而是在尋找數據表。

所以我仍然不知道是什么導致了我的原始代碼的問題,但是我嘗試使用TableAdapter Insert方法而不是update,這似乎可以解決我所希望的一切:

         private MyDataSetTableAdapters.MeasurementTableAdapter measurementTableAdapter =
         new MyDataSetTableAdapters.MeasurementTableAdapter();

         measurementTableAdapter.Insert((n+1), DeviceID, DateTime.Now, Values[n]);

暫無
暫無

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

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