2012-10-22 182 views
-2

我想從字符串數組中選擇一個隨機元素並將其保存在我的數據庫中。如何從數組中選擇一個隨機元素

OleDbConnection myConnection = new OleDbConnection(connectionString); 
myConnection.Open(); 
string Update = string.Format("UPDATE Ships SET InPort=True"); 
OleDbCommand myCommandUpdt = new OleDbCommand(Update); 
myCommandUpdt.Connection = myConnection; 
myCommandUpdt.ExecuteNonQuery(); 
OleDbDataReader drdrShipsRead = myCommandUpdt.ExecuteReader(); 

string[] Randominporta = { "True", "False", "False" }; 
// Testlabel.Text = Convert.ToString(Randominport[randomNumber]); 

int iNumber = 1; 
while (drdrShipsRead.Read()) 
{ 
    int randomNumber = random.Next(0, 3); 
    string myAddingQuery = string.Format(" UPDATE Ships SET InPort= " + Convert.ToString(Randominport[randomNumber]) + " WHERE ID= " + iNumber + ""); 
    OleDbCommand myCommand = new OleDbCommand(myAddingQuery); 

    string myCommand.Connectionresult = myConnection; 
    myCommand.ExecuteNonQuery(); 
    iNumber++; 
} 

它不起作用。

+7

您是否收到任何錯誤消息?本網站的目的不是爲了解決問題,而在於您對給定的解決方案感到滿意。下一次,你應該能夠自己做到這一點。因此,請將您的問題與描述性錯誤(消息)一起發佈,我們可以向您解釋您做錯了什麼。 –

+1

「我有最難的時間」不是一個錯誤信息:請解釋你所看到的症狀。 – Richard

+0

真的需要看到你的錯誤信息。 – tomfanning

回答

1

感謝@CodesInChaos,我覺得在這個問題的代碼是一般吧,但你不正確申報您的陣列,

嘗試,

var randomImport = new [] { "True", "False", "False" }; 

這將是較不脆爲此

var randomImport = new [] { "True", "False", "False" }; 
var randomNumber = random.Next(0, randomImport.Length); 

,或者

var randomNumber = random.Next(
    randomImport.GetLowerBound(0), 
    randomImport.GetUpperBound(0) + 1); 
+1

「'maxValue'返回的隨機數的唯一上限。」 – CodesInChaos

+0

@CodesInChaos,感謝您填寫我的錯誤信息。 – Jodrell

+0

仍然沒有工作:(它的運行,但沒有修改數據庫 –

0

隨着Jodrell的回答,您應該修改下面的行以包含對SET InPort值的引用。

string myAddingQuery = string.Format(" UPDATE Ships SET InPort= '" + Convert.ToString(Randominport[randomNumber]) + "' WHERE ID= " + iNumber + ""); 
+0

我編輯了SQL的問題,因爲這實際上是一個單獨的問題 - 對不起 – tomfanning

+0

沒有錯誤信息,它運行但不修改數據庫 –

+0

@tomfanning我認爲,你應該留下他的問題,因爲我可以看到其他部分的代碼也可能有問題 – Ramesh

2

簡單的方法來做到這一點是:

var a = new List<string> { "True", "False", "False" }; 

int index = random.Next(strings.Count); 
var name = a[index]; 
a.RemoveAt(index); 
return name; 
相關問題