2012-10-22 140 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; 
相关问题