Visual Studio 连接 Mysql 实现一个选课管理系统--->提取数据的几种方法

      比较无奈的一个选择,上课老师要求必须使用Mysql,而我又比较喜欢用VS,所以,就又过了这样一个蹩脚的组合……

      编程语言:C#;

      使用软件:VS2008,Mysql 5.0,mysql-connector-net-5.0.9,MySQL.VisualStudio(要先装mysql-connector-net,后装MySQL.VisualStudio);

      在这里实际上使用了一种偷懒的做法,使用Mysql提供的类库,可以在代码中直接使用Mysql.Data.*。

     

  针对几个模块的不同方法:

      一,登陆的验证:

      没有见识过真正的用户名密码验证时怎么做的,我使用了比较笨的办法:

      

Login
 1             MySqlConnection conn  =   new  MySqlConnection(defvalues.constr);
 2              conn.Open();
 3               // 读取所输入的用户名和密码
 4              MySqlCommand comm  =  conn.CreateCommand();
 5               if  (radioButton1.Checked)
 6              {
 7                   string  sql  =   " SELECT aname,pass FROM xuanke.admin WHERE(aname=' "   +  textBox1.Text  +   " ') " ;
 8                  comm.CommandText  =  sql;
 9                   try
10                  {
11                      MySqlDataReader datar  =  comm.ExecuteReader();
12 
13 
14                       // 判断是否存在输入的用户
15 
16                       if  ( ! datar.HasRows)
17                      {
18                          MessageBox.Show( " 用户名不存在,请重新输入! " );
19                          textBox1.Focus();
20                           return ;
21                      }
22 
23 
24                       // 读取数据库的内容,并与输入的进行比较;
25                       while  (datar.Read())
26                      {
27                           // 判断用户输入是否正确
28                           if  (datar[ " pass " ].ToString().Trim()  !=  textBox2.Text.Trim())
29                          {
30                              MessageBox.Show( " 用户密码不正确,请重新输入! " );
31                              textBox2.Focus();
32                               return ;
33                          }
34 
35                           else
36                          {
37                              AdminLogin f1  =   new  AdminLogin();
38                              f1.info  =  textBox1.Text.Trim();
39                              f1.ShowDialog();
40                              Close();
41                              
42                          }
43 
44                      }
45                  }
46                   catch  (Exception ex)
47                  {
48                      MessageBox.Show( " 出现错误,错误原因为 "   +  ex.Message,
49                           " 系统提示: " , MessageBoxButtons.OK, MessageBoxIcon.Error);
50                  }
51 
52 
53              }

 

        先把用户名和密码从表中选出来,然后,持有用户名,把键入的密码在查询结果查询,验证。

        这里关于获取数据的方法,就是利用command吸收了sqlstr,然后使用command.ExecuteReader();返回的DataReader,利用这个里面提供的索引来获取。

        我觉得这里返回给DataReader的应该也是一个表,可以根据不同的column来读取不同的值。

        二,根据学号查询学生信息

 

search
 1           private   void  GetData( string  selectCommand, BindingSource bd)
 2          {
 3               try
 4              {
 5                   //  Specify a connection string. Replace the given value with a 
 6                   //  valid connection string for a Northwind SQL Server sample
 7                   //  database accessible to your system.
 8                  String connectionString  =
 9                       " Database=xuanke;Data Source=localhost;User Id=root;Password=tjucfsc4 " ;
10 
11                   //  Create a new data adapter based on the specified query.
12                  MySqlDataAdapter dataAdapter  =   new  MySqlDataAdapter(selectCommand, connectionString);
13 
14                   //  Create a command builder to generate SQL update, insert, and
15                   //  delete commands based on selectCommand. These are used to
16                   //  update the database.
17                  MySqlCommandBuilder commandBuilder  =   new  MySqlCommandBuilder(dataAdapter);
18 
19                   //  Populate a new data table and bind it to the BindingSource.
20                  DataTable table  =   new  DataTable();
21                  table.Locale  =  System.Globalization.CultureInfo.InvariantCulture;
22                  dataAdapter.Fill(table);
23                  bd.DataSource  =  table;
24 
25 
26 
27              }
28               catch  (Exception ex)
29              {
30                  MessageBox.Show( " 出现错误,错误原因为 "   +  ex.Message,
31                       " 系统提示: " , MessageBoxButtons.OK, MessageBoxIcon.Error);
32              }
33          }
34           private   void  button3_Click( object  sender, EventArgs e)
35          {
36              dataGridView4.DataSource  =  bindingSource1;
37               if  (radioButton2.Checked)
38              {
39                   string  str  =   " select * from xuanke.students where sname=\ ""  + textBox1.Text.Trim() +  " \ " ; " ;
40                  GetData(str, bindingSource1);
41              }
42 
43               else   if  (radioButton1.Checked)
44              {
45                   string  str  =   " select * from xuanke.students where sid=\ ""  + textBox1.Text.Trim() +  " \ " ; " ;
46                  GetData(str, bindingSource1);
47              }
48               else  { ;}
49          }

 

        此处使用了Datagridview和BindingSource,使用比较简单:构造一条SQL语句,然后将Datagridview的数据源指向BindingSource,然后利用GetData方法,将SQL语句的执行结果赋给BindingSource就可以了。我觉得这个方法是见过的方法中最简单有效的。GetData可以COPY到任何你想要的地方而无需更改,只要把表格和源定义好,直接加进SQL语句就可以啦~

        三,页面Load

        这个方法需要VS能够收录Mysql的连接器,第一次成功了,后来就不行,窃以为扩展性不如上两个好。

        这种方法实际上就是程序自主建立自己的DataSet,然后,一些数据访问直接在DataSet 上完成,而不用再去访问数据库。

        先建立一个DataTableAdapter对象,然后就根据提示,可以输入SQL语句,一步步,最重结果是建立了一个DataTable。没什么代码,鼠标流。       

      

load
1               //  TODO: 这行代码将数据加载到表“kunDataSet.DataTable3”中。您可以根据需要移动或移除它。
2               this .dataTable3TableAdapter.Fill( this .kunDataSet.DataTable3);
3               //  TODO: 这行代码将数据加载到表“kunDataSet.DataTable1”中。您可以根据需要移动或移除它。
4               this .dataTable1TableAdapter.Fill( this .kunDataSet.DataTable1);

 

        就是把DataSet中的数据表Fill到DataGridView中。

        大概用到的也就这几种方法了,权作是个笔记了。

       

你可能感兴趣的:(mysql)