连接数据库之前需要本地具有这个数据库,已经相应的表格。可以通过button执行以下代码,实现增删改查的功能
连接数据库
StringconnetStr="server=127.0.0.1;port=3306;user=root;password=123456; database=t1;";
// server=127.0.0.1/localhost 代表本机,端口号port默认是3306可以不写,t1是数据库名称。
MySqlConnectionconn=newMySqlConnection(connetStr);
//这是连接语句
conn.Open();
//打开通道,建立连接
连接数据库的时候可能会报错,需要使用try catch语句捕捉异常。
查询数据库
//在这里使用代码对数据库进行查询
stringsql="select * from new_table";//new_table是数据库中表的名称
MySqlCommandcmd=newMySqlCommand(sql,conn);//mysqlcommand是执行sql语句
MySqlDataReaderreader=cmd.ExecuteReader();//执行ExecuteReader()返回一个MySqlDataReader对象
此时reader中就包含了表中的所有数据,可以建立一个泛型集合把数据存储到里面,然后把泛型集合和Datagrid的itemsource绑定,显示在软件中。
通过Datagrid展示表格
1.设置Gatagrid
以下是xaml代码,AutoGenerateColumns是不自动生成列的属性。
Margin="0,282,0,0"
Grid.Row="1"
AutoGenerateColumns="False"
>
Width="*"
Binding="{Binding source}"
Header="资源"/>
Width="*"
Binding="{Binding number}"
Header="数量"/>
执行完查询语句,需要通过泛型集合与itemsource绑定显示表格,这篇文章在mysql的数据库表格只有资源和数量两项。datagrid中资源列绑定source,数量列绑定number。
2.创建类
为保证泛型集合中的每个元素都具有source和number两个参数,这里需要创建相应的类,使其包含这两个元素。
publicclassTest
{
publicstringsource{get;set;}
publicstringnumber{get;set;}
}
3.创建泛型集合
//建立list泛型集合,以便于将所有数据库的数据存储到这个泛型集合中。
ObservableCollectiontestList=newObservableCollection();
4.将reader中的数据赋值到泛型集合上
while(reader.Read())//初始索引是-1,执行读取下一行数据,返回值是bool
{
//逐步读取数据库中的数据,然后添加到集合中
testList.Add(newTest()
{
source=reader.GetString("资源"),
number=reader.GetString("数量")
});
}
//dg为datagrid的名字,将其资源与testlist绑定,可以将数据库中的数据通过testlist这个泛型集合展示在DataGrid中!。
dg.ItemsSource=testList;
完成后效果图如下
修改数据库
目前没想好怎么直接通过datagrid进行修改数据库,以下方法是通过textbox控件进行的,如果大家有更好的方法,可以评论去提点一下。
1.界面中设置textbox和label
在wpf界面中设置好textbox和label,还有相应的按钮,xaml代码如下
效果如下, margin可以忽视,懒得设置grid.columns,就直接摆到相应位置。导出数据按钮也可以忽视,下一篇文章整理EXCEL批量导入导出。
2.修改数据按钮的后台代码
修改数据关键语句是updata。where表示当资源=@source时,数量=@number,@*表示某一数值。
cmd.CommandText="UPDATE new_table SET `数量` = @number WHERE (`资源` =@source)";
cmd.Parameters.AddWithValue("@source",AddSource.Text);
cmd.Parameters.AddWithValue("@number",AddNurmber.Text);
cmd.ExecuteNonQuery();
以下是完整代码,大概流程是先连接数据库,然后通过sql语句进行修改。其中AddSource和Addnurmber对应两个textbox的名字。
Stringcnotallow="server=127.0.0.1;port=3306;user=root;password=123456; database=t1;";
// server=127.0.0.1/localhost 代表本机,端口号port默认是3306可以不写,t1是数据库名称。
MySqlCnotallow=newMySqlConnection(connetStr);
conn.Open();//打开通道,建立连接,可能出现异常,使用try catch语句
MySqlCommandcmd;
cmd=conn.CreateCommand();
//commandtext 的语句对应于mysql中的语句, 需要有值的地方可以用@**表示,然后再下面添加 parameter.addwithvalue来确定这个值。
cmd.CommandText="UPDATE new_table SET `数量` = @number WHERE (`资源` =@source)";
cmd.Parameters.AddWithValue("@source",AddSource.Text);
cmd.Parameters.AddWithValue("@number",AddNurmber.Text);
cmd.ExecuteNonQuery();
MessageBox.Show("修改成功");
以下对1#货车数量修改成100修改后如图,修改后可以再次执行查询数据功能,保证datagrid显示的表格实时更新。
增加和删除与修改数据
增加和删除与修改数据前面代码相似。只给出关键代码,首先是删除数据的代码
cmd.CommandText="DELETE FROM new_table WHERE(`资源` = @source )";
cmd.Parameters.AddWithValue("@source",AddSource.Text);
cmd.ExecuteNonQuery();
增加数据的代码
cmd.CommandText="INSERT INTO new_table(资源,数量) VALUES(@source,@number)";
cmd.Parameters.AddWithValue("@source",AddSource.Text);
cmd.Parameters.AddWithValue("@number",AddNurmber.Text);
cmd.ExecuteNonQuery();