以下是数据库中二进制搜索的代码。
int beg, mid, count = 0;
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\Dictionary.mdf;Integrated Security=True;User Instance=True";
SqlCommand cmd = new SqlCommand("select max(SNo) from WordList ", con);
con.Open();
SqlDataReader dr = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
int end;
while (dr.Read())
{
end = Convert.ToInt32(dr.GetValue(0));
}
con.Close();
beg = 0;
mid = (beg + end) / 2;
while (beg <= end)
{
我的数据库中有140280个单词。
问题是变量'end'本身如果其值> 10958则自己除以2。
任何人都可以说,问题是什么?
答案 0 :(得分:1)
我的数据库中有140280个单词。
我想您希望获得count
而不是MAX
,您在end
中获得的值是该字段的最大值(SNo
)。更改您的查询以获取COUNT(SNo)
SqlCommand cmd = new SqlCommand("select COUNT(SNo) from WordList ", con);
还可以使用SqlCommand.ExecuteScalar方法获取单个值。考虑在using
语句中包含连接对象和命令对象。
int end = (Int32)cmd.ExecuteScalar();