Ventuz中读取mysql时的总结

由于项目需要连接数据库,就自己做测试。我下载的是mysql-8.0.15-winx64版本的,安装包找找就有了,里面应该都有具体的安装教程。安装时反正遇见了很多坑,各种小问题,还好都一一解决了。现在项目中数据大部分都是读取数据库,这样便于管理维护,然后Ventuz又是一款实时的交互性展示软件,数据的及时性就显得比较重要,所以懂数据库还是很重要的。
下面进入正题

直接上代码:

//命名空间
using System;
using Ventuz.Kernel;
using MySql.Data;
using MySql.Data.MySqlClient;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Data;
using System.Collections.Generic;

    //就一个OnMethod1方法
	public bool OnMethod1(int arg)
	{
		//链接字符串
		MySqlConnection myconn = new MySqlConnection("Host =localhost;port=3306;Database=gyx;Username=root;Password=Iam021266.+");
		//打开链接
		myconn.Open();
		
		DataSet ds = new DataSet();
		//建立DataTable对象(相当于建立前台的虚拟数据库中的数据表)
		DataTable dt;
		
		string str = string.Format("select   {0}  from  {1}", type,table);
		// 执行当前操作        ======*****======
		MySqlCommand cmd = new MySqlCommand(str, myconn);		  
		cmd.ExecuteNonQuery();  
		MySqlDataAdapter adp = new MySqlDataAdapter(str, myconn);
		adp.Fill(ds);					
		dt = ds.Tables[0];	
	  
        //这里面是一个刷新循环,随机赋值,模拟数据库更新效果
		for (int i = 0; i < dt.Rows.Count; i++)
		{
	string st = string.Format("update {0}  set  {1}=(FLOOR(RAND() * 100))   where  id={2}", table, type, i);	
				// 执行当前操作        ======*****======
				MySqlCommand cm = new MySqlCommand(st, myconn);		  
				cm.ExecuteNonQuery(); 
		}

		// 注意:  ds.Tables[0].Rows.Count == dt.Rows.Count;	
		//我是利用集合去接收查询到的数据,最开始想利用数组,但是在给数组赋值时,老是出现:缺少get
		//访问器的问题,解决不了才用的集合。
        //为了方便我用的string类型的,别的类型需要自己去转换			
		List<string> lis = new List<string>();						
		//一行一行的循环获取 ,DataRow表示Table中的一行数据		     
		for(int i = 0; i < dt.Rows.Count; i++) 							
		{ 								
			lis.Add(dt.Rows[i][0].ToString());
		}					
		//转为数组
		A = lis.ToArray();		
			
		//关闭链接	
		//adp.Close();
		myconn.Close();
		changed = true;
		return false; 	
	}

这个是简化版的,下面附上我自己做出来的效果图,可以切换需要查询的数据库,表,列
Ventuz中读取mysql时的总结
Ventuz中读取mysql时的总结
最后将这些数据附加进柱状图或者别的图形中,再添加一个mover定时刷新就能看到实时改变的图形了。

PS:但是发现一个问题,我同时开cmd 进行查询我的数据库信息,发现我利用cmd查询到的表信息总是比在Ventuz中得到的表信息早一步,不知道是什么原理,希望懂得大神告知我一下,万分感谢!