我们项目基本框架基本上搭建好,接下来便是后台数据库的搭建,我们这次的项目是一个对数据库要求不是很多的应用,而且数据库的数据不是很多,我们考虑到资源利用,所以我们一致采用access数据库,虽然我们兜对access数据库不是很熟,我们总觉得access数据库应该很简单。我们sql server数据库都没问题,这个应该没问题吧。

   我们很快也就成功连接到了access数据库,string connstring = "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=|DataDirectory|\\app_data\\HappyGame.mdb;";
            OleDbConnection conn = new OleDbConnection(connstring);
            string strsql = "select * from [dbuser] where username='" + textBox1.Text + "'and pwd='" + passwordBox1.Password + "'";
            OleDbCommand cmd = new OleDbCommand(strsql, conn);
            conn.Open();
            OleDbDataReader rd = cmd.ExecuteReader();

但是access数据库本身就有他自己独特的劣根型啊,首先利用access数据库存取数据,当你定义一个自动编号的列,如果数据被删除,这个编号就不会被其他数据条占用,就会造成我们的的数据库编号不是连续的,这个问题只要我们的个列不会在数据操作过程中没有使用,是没有关系的,但是有使用到这样的列,就不能保证不能出问题啊。

  我们这个项目有一个随机从数据库读取数据的要求,而实现随机读取便是我们数据库方面的第一个问题,我们利用rnd()sql系统随机函数对sql语句进行处理,可以我们的随机无论怎样也不是随机的,我们在网上找了很多相关的资料,网上很多也是利用我们这种方法,经过我们综合网上的方法,我们终于成功解决这个问题:

 Random rnd = new Random(unchecked((int)DateTime.Now.Ticks));
            int intRandomNumber = rnd.Next();

  strsql = "select * from [" + Application.Current.Properties["table"] + "] order by Rnd(" + (-1 * intRandomNumber) + "*id)";

我们在随机数本身,定义一个变量保存rnd.next()函数产生的下一个随机数,而在sql语句中Rnd(" + (-1 * intRandomNumber) + "*id),这样在rnd函数中加入负值,就会避免每次产生相同顺序的序列,这样每次不会产生重复序列,这样就解决我们随机的问题。