zoukankan      html  css  js  c++  java
  • 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中。

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

           

  • 相关阅读:
    Spring 原生SQL查询
    Spring 使用注解查询 JPQL 按对象查询
    JAVA 判断输入流是否为空
    Spring-AOP教程
    错误笔记5, Spring datatable Error creating bean with name 'userController'
    Spring 分页查询
    前端传数据到servlet数据乱码
    sql 分页查询
    移动APP性能测试
    【8】接口、多态
  • 原文地址:https://www.cnblogs.com/YFYkuner/p/1628775.html
Copyright © 2011-2022 走看看