2017-07-19 67 views
-1

我想將一些數據保存到多臺PC的一張表中。但是數據有一個手動填充的索引(ID)和先前的數據(ID)的順序,所以我首先在數據庫上檢查它然後增加它。問題是如果多個PC /設備一起保存,它將保存相同結果。如何解決這個問題呢?如何將數據從多臺PC保存到一張表SQL

這是搜索,所使用的最後一個ID查詢:

> public DataRow GetPlayerIDByClient(object clientPK) 
>   { 
>    DataRow result = null; 
> 
>    if (clientPK != null) 
>    { 
>     IDbDataParameter clientFKParam = this.CreateParameter(csPlayerNamesEntity.Names.ClientFK, clientPK); 
> 
>     string selectCommand = string.Format("SELECT TOP 1 * FROM {0} WHERE {1} = {3} AND " + 
>               "({2} LIKE 'G%' or {2} LIKE 'g%') ORDER BY {4} DESC", 
>               csPlayerNamesEntity.Names.TableName, //0 
>               csPlayerNamesEntity.Names.ClientFK, //1 
>               csPlayerNamesEntity.Names.ID,//2 
>               clientFKParam,//3 
>               csPlayerNamesEntity.Names.PK); //4 
> 
>     DataTable dt = this.ExecReaderDataTable(selectCommand, clientFKParam); 
> 
>     if (dt != null && dt.Rows.Count > 0) 
>     { 
>      result = dt.Rows[0]; 
>     } 
>    } 
> 
>    return result; 
>   } 
+0

您是否聽說過實體框架?在處理ASP.NET MVC應用程序中的數據庫時,它會讓你的生活更輕鬆。 – Robert

+0

這是一個設計問題。你有多種可能的解決方案。您可以從中央實例同步客戶端。或者,最好將數據寫入導入表中,並讓數據庫上的作業將導入的數據傳輸到生產表。 –

+0

SQL Server爲您提供解決此問題的解決方案。例如,您可以爲ID列使用和標識列(自動增量),或者可以使用序列來檢索下一個ID。 Google for SQL Server序列。 –

回答

0

如果您有來自多個源表更新,你需要確保ID正確設置有兩種解決方案,是相當常見的。

一種是使主鍵成爲在SQL Server本身上增加的標識列。如果您在SQL Server中需要此值,則可以在最後使用SELECT SCOPE_IDENTITY()構造INSERT SQL,以便將該Id返回到您的應用程序。兩個程序/機器插入的東西將由SQL Server編組,並且你不會得到重疊的ID。

另一種方法是將該列設置爲UNIQUEIDENTIFIER並從應用程序提供Guid。由於它們是獨一無二的,所以不同的機器/過程不會發生衝突。但是,在大型表上可能會有性能損失,因爲Ids不會按順序排列,並且會對錶進行分段,因爲SQL Server在插入時必須對行進行隨機播放,以便按正確的順序爲行提供空間。

相關問題