C# 使用 ComboBox 和textbox的值作为查询条件,查询出SQlite数据库三列的值的总和以及另外一列值的和作为饼图的Y轴数据
时间: 2024-03-20 09:45:00 浏览: 55
好的,这是一个比较复杂的问题,需要分步骤来解决。我将尽力给出详细的解释和代码实现,希望能够帮到你。
首先,我们需要连接 SQLite 数据库并查询数据。可以使用 System.Data.SQLite 库来实现这个功能。以下是一个示例代码,你可以根据自己的需要进行修改:
```csharp
using System.Data.SQLite;
SQLiteConnection connection = new SQLiteConnection("Data Source=mydatabase.sqlite;Version=3;");
connection.Open();
string query = "SELECT column1, column2, column3, column4 FROM myTable WHERE column1 = @value1 AND column2 = @value2;";
SQLiteCommand command = new SQLiteCommand(query, connection);
command.Parameters.AddWithValue("@value1", comboBox1.SelectedItem.ToString());
command.Parameters.AddWithValue("@value2", textBox1.Text);
SQLiteDataReader reader = command.ExecuteReader();
List<int> columnSumList = new List<int>();
int column4Sum = 0;
while (reader.Read())
{
int column1Value = reader.GetInt32(0);
int column2Value = reader.GetInt32(1);
int column3Value = reader.GetInt32(2);
int column4Value = reader.GetInt32(3);
int columnSum = column1Value + column2Value + column3Value;
columnSumList.Add(columnSum);
column4Sum += column4Value;
}
reader.Close();
connection.Close();
```
在上面的代码中,我们使用了一个 SELECT 查询来获取数据库中指定条件的数据。在这个查询中,我们使用了两个参数来代替 ComboBox 和 TextBox 中的值,以避免 SQL 注入攻击。在查询结果中,我们将 column1、column2 和 column3 的值加起来,得到一个新的列值,将其添加到一个 List 中,用于后续的饼图数据。我们还将 column4 的值累加到一个变量中,用于后续的饼图数据。
接下来,我们需要使用一个图表控件来绘制饼图。这里我们使用 Windows Forms 中的 Chart 控件。以下是一个示例代码:
```csharp
using System.Windows.Forms.DataVisualization.Charting;
chart1.Series.Clear();
chart1.Series.Add("Pie");
foreach (int columnSum in columnSumList)
{
DataPoint dataPoint = new DataPoint();
dataPoint.SetValueXY("", columnSum);
chart1.Series["Pie"].Points.Add(dataPoint);
}
DataPoint column4DataPoint = new DataPoint();
column4DataPoint.SetValueXY("", column4Sum);
chart1.Series["Pie"].Points.Add(column4DataPoint);
chart1.Series["Pie"].ChartType = SeriesChartType.Pie;
chart1.Series["Pie"]["PieLabelStyle"] = "Outside";
chart1.Series["Pie"]["PieStartAngle"] = "90";
chart1.Series["Pie"]["CollectedThreshold"] = "10";
chart1.Series["Pie"].IsValueShownAsLabel = true;
```
在上面的代码中,我们首先清除了 Chart 控件中的所有系列,并添加了一个名为 "Pie" 的新系列。然后,我们使用 foreach 循环遍历 columnSumList 中的每个值,并将其作为数据点添加到 "Pie" 系列中。最后,我们将 column4Sum 的值作为单独的数据点添加到 "Pie" 系列中。为了使饼图更美观,我们还设置了一些属性,例如 "PieLabelStyle"、"PieStartAngle"、"CollectedThreshold" 和 "IsValueShownAsLabel"。
至此,我们完成了将 ComboBox 和 TextBox 中的值作为查询条件,查询 SQLite 数据库中三列值的总和以及另外一列值的和,并将结果绘制成饼图的整个过程。希望能够帮到你!
阅读全文