C# 使用 ComboBox 和textbox的值作为条件,查询SQlite数据库其中三列的值的总和 以及另外一列值的和作为饼图的Y轴数据
时间: 2024-03-20 08:44:00 浏览: 158
好的,以下是一个简单的示例代码,展示如何使用 C# 语言进行 SQLite 数据库查询操作,并使用 ComboBox 和 TextBox 控件作为查询条件,并将结果用于绘制饼图:
```csharp
using System;
using System.Data.SQLite;
using System.Windows.Forms;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Windows.Forms.DataVisualization.Charting;
namespace SQLiteDemo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnQuery_Click(object sender, EventArgs e)
{
// 获取 ComboBox 和 TextBox 的值
string comboBoxValue = comboBox1.Text;
string textBoxValue = textBox1.Text;
// 构造查询 SQL 语句
string sql = "SELECT column1, column2, column3, column4 FROM my_table WHERE combobox_column = @combobox AND textbox_column = @textbox";
// 创建连接对象
using (SQLiteConnection conn = new SQLiteConnection("Data Source=my_database.db"))
{
// 打开连接
conn.Open();
// 创建命令对象
using (SQLiteCommand cmd = new SQLiteCommand(sql, conn))
{
// 添加查询参数
cmd.Parameters.AddWithValue("@combobox", comboBoxValue);
cmd.Parameters.AddWithValue("@textbox", textBoxValue);
// 执行查询,获取结果集
using (SQLiteDataReader reader = cmd.ExecuteReader())
{
// 定义变量,用于保存查询结果
Dictionary<string, double> data = new Dictionary<string, double>();
double sum1 = 0;
double sum2 = 0;
double sum3 = 0;
// 遍历结果集,输出查询结果
while (reader.Read())
{
// 获取每一行的四个列的值
string column1 = reader.GetString(0);
double column2 = reader.GetDouble(1);
double column3 = reader.GetDouble(2);
double column4 = reader.GetDouble(3);
// 计算第二、三、四列的总和
sum2 += column2;
sum3 += column3;
sum4 += column4;
// 以第一列的值为键,将第二、三、四列的值累加到字典中
if (data.ContainsKey(column1))
{
data[column1] += column4;
}
else
{
data[column1] = column4;
}
}
// 输出查询结果
Console.WriteLine("第二列的总和:" + sum2);
Console.WriteLine("第三列的总和:" + sum3);
Console.WriteLine("第四列的总和:" + sum4);
// 绘制饼图
DrawPieChart(data);
}
}
}
}
private void DrawPieChart(Dictionary<string, double> data)
{
// 创建 Chart 控件
Chart chart1 = new Chart();
chart1.Parent = this;
chart1.Dock = DockStyle.Fill;
// 创建 ChartArea
ChartArea chartArea1 = new ChartArea("chartArea1");
chart1.ChartAreas.Add(chartArea1);
// 创建 Series
Series series1 = new Series("series1");
series1.ChartType = SeriesChartType.Pie;
series1.ChartArea = "chartArea1";
chart1.Series.Add(series1);
// 添加数据
foreach (var item in data)
{
series1.Points.AddXY(item.Key, item.Value);
}
}
}
}
```
需要注意的是,上述代码仅为示例代码,需要根据具体的情况进行修改和完善。另外,该代码示例中使用了 SQLite 数据库和 Chart 控件,因此需要在项目中添加 SQLite 数据库驱动程序和 Chart 控件。
阅读全文