我正在尝试将C#与SQL Server数据库一起使用,但我遇到了问题。
我有一个类似于原始数组大小为10001x1的数组
long[] lvl = { 0, 7200000, 15840000, 25920000, 37440000, 50400000, 64800000, 80640000 }
当我试图从数据库中获取相同的long[]
数组时,我得到了一个错误。
string sorgu = "select * from paragon";
var komut = new SqlCommand(sorgu, baglanti);
var reader = komut.ExecuteReader();
IList<long> lvl = new List<long>();
while (reader.Read())
{
lvl.Add((long)reader["Paragon"]);
}
reader.Close();
reader.Dispose();
long ns = Convert.ToInt64(textBox1.Text);
long sns = Convert.ToInt64(textBox2.Text);
long nsxp = lvl[ns];
long snsxp = lvl[sns];
long toplam = nsxp + snsxp;
for (int i = 0; i < lvl.Count; i++)
{
if (toplam < lvl[i])
{
textBox3.Text = Convert.ToString(i - 1);
break;
}
}
发布于 2018-12-16 23:48:19
您的问题是数据类型不匹配。
reader在每个reader.Read()操作中都会给出一个值。
IList<long> myArray = new List<myArray>();
while (reader.Read())
{
myArray.Add(reader.GetInt64(0));
}
reader.Close();
reader.Dispose(); // always close and dispose your reader whenever you are done.
long ns = Convert.ToInt64(textBox1.Text);
long sns = Convert.ToInt64(textBox2.Text);
long nsxp = lvl[ns];
long snsxp = lvl[sns];
long toplam = nsxp + snsxp;
for (int i = 0; i < lvl.Length; i++)
{
if (toplam < lvl[i])
{
textBox3.Text = Convert.ToString(i - 1);
break;
}
}
发布于 2018-12-16 23:51:07
SqlDataReader
的Read()
从数据库中读取一条记录。您正在尝试使用它一次读取所有记录。下面的代码演示了如何按顺序读取每个值的示例:
while (reader.Read()) // This returns true if a record is available, and false once all records have been read.
{
var paragonValue = reader.GetInt64(0); // This reads the current record's Paragon value.
// Do something with paragonValue.
}
有关详细信息,请参阅SqlDataReader.Read上的Microsoft Docs。
https://stackoverflow.com/questions/53803264
复制相似问题