小白编写C#项目(主要为连接数据库和简单画图)
基于vs2012
2019-10-03
1.版本不支持直接在解决方案中下载,使用数据库需下载MySql.Data 在程序包管理器控制台里输入
Install-Package MySql.Data -Version 6.7.9
2.存取数据库内容使用Dapper,版本不支持,在程序包管理器控制台里输入,在.NetFramework加载控件(.Form的)
Install-package dapper -Version 1.50.2
获取的数据(一行)如果包含多种类型(每列数据类型不都一样),可新建类库,把类库的名字作为新类型进行存取,新类中用到了C#的get和set,也就是ORM模式
private string apiTag; private int vvalue; public String ApiTag { get { return apiTag; } set { apiTag = value; } } public int Value { get { return vvalue; } set { vvalue = value; } }
3.可直接将List类型作为控件等的数据来源
dgHistory.ItemsSource = list;
AngleYValues = new List<int>();
AngleYValues = dataMapper.GetValueList("AngleY");
Values = new ChartValues<int>(AngleYValues),
4.更新数据需使用线程,创建子线程
Thread childThread1 = new Thread(updateThread); childThread1.Start();//子线程开始
其中updateThread为子线程要做的事件
public void updateThread() { while (true) { Load();// 加载数据 Thread.Sleep(4000);//线程停止4000ms } }
5.更新控件和其中的数据需回到主线程(可以这样理解,其实不是的)
dgHistory.Dispatcher.BeginInvoke(new Action(() => //更新数据和控件要回到主线程 { dgHistory.ItemsSource = list;//不可放到外面 dgHistory.Items.Refresh(); }));
6.连接数据库用到的语句只有密码和数据库名称需要改(也就是后两个参数),注意不是表名
public static readonly string connectionString = "server=localhost;User Id=root;Password=123456;Database=sunpower;";
2019-10-05
7.新窗口打不开,需要这样做
new Window1().Show();//先打开新的,再关闭这个,否则新窗口可能不出来
this.Close();
2019-10-07
8.关于packages.config问题 未声明“packages”元素
解决方法:
1).多次打开,可能可以运行
2).打开packages.config —XML(菜单中的)— 创建XML架构
XML(菜单中的)—架构——打对勾,地址为C:\Users\xxx\AppData\Local\Temp
9.加载窗口需要根据条件改变控件的内容时
this.Dispatcher.BeginInvoke( new Action( delegate { int i = int.Parse(MainBusiness.getPowerState().Value.ToString()); if (i == 1) { PowerStateStatus.Content = "已开启"; } else { PowerStateStatus.Content = "已关闭"; } int n = int.Parse(MainBusiness.getLight().Value.ToString()); LightStatus.Content = n; } ) );
10.Keyword not supported.类型错误如果出现在数据库连接部分,可能是连接语句错误,是“server”不是“sever”
11.将Slider的值设为整数(浮点数不能convert成整数),在xaml设计器中添加IsSnapToTickEnabled="True",为了使Slider和Textbox值一致,Text="{Binding ElementName=slidery,Path=Value,Mode=TwoWay}"
即可,因Textbox数据来源已确定。
12。将连接数据库的DataGrid的空白列去掉:
在每列DataGridTextColumn中Width="100*" 值任意,窗体中还可以手动改变。