c#实现与数据库的链接从而实现读取与修改数据库内容

  1. 选择数据库:首先,你需要选择一个数据库系统来存储和检索环境监控数据。常见的选择包括SQL Server、MySQL、PostgreSQL、SQLite等。

  2. 建立数据库连接:使用ADO.NET、Entity Framework、Dapper等库来建立与数据库的连接。

  3. 设计数据库模式:在数据库中创建表来存储环境数据,如温度、湿度、光照等。

  4. 收集环境数据:使用传感器或其他设备收集环境数据。

  5. 将数据写入数据库:将收集到的环境数据写入数据库。

  6. 查询和展示数据:从数据库中查询数据,并在控制台、Web界面或其他UI上展示。

  7. 设置警报:根据预设的阈值设置警报,当环境数据超出范围时发送通知。

首先,确保你的项目中已经安装了SQL Server等客户端库(如System.Data.SqlClient)。

目录

一.代码演示

二.操作讲解

三.容易出现的错误


一.代码演示

using Sunny.UI;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;

namespace 环境监控
{
    public partial class Form1 : UIForm
    {
        private SerialPort serialPort;

        private int temp;
        private int hum;
        private int led;


        private int xCount = 1;

        private textEntities3 testEntities;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            serialPort = new SerialPort();
            serialPort.BaudRate = 115200;
            serialPort.DataReceived += MySerialPortReceive;
            this.uiComboBoxSerial.SelectedIndex = 0;

            this.chart1.Series.Add("温度");
            chart1.Series["温度"].ChartType = SeriesChartType.Spline;


            testEntities = new textEntities3();
        }

        private void MySerialPortReceive(object sender, SerialDataReceivedEventArgs e)
        {
            byte[] data = new byte[5];
            int count = serialPort.Read(data, 0, 5);
            if (count != 5)
            {
                return;
            }
            if (data[0] != 0x55 || data[4] != 0xaa)
            {
                return;
            }

            temp = data[1];
            hum = data[2];
            led = data[3];

            sensor sensor = new sensor();
            sensor.temp = temp;
            sensor.hump = hum;
            sensor.time = DateTime.Now.ToLocalTime();

            testEntities.AddTosensor(sensor);
            testEntities.SaveChanges();

            this.Invoke(new Action(() => {
                this.uiTextBoxTemp.Text = temp.ToString();
                this.uiTextBoxHum.Text = hum.ToString();
                if (led == 0)
                {
                    this.pictureBox1.Image = Properties.Resources.ledOff;
                }
                else
                {
                    this.pictureBox1.Image = Properties.Resources.ledON;
                }

                xCount++;
                if (chart1.Series["温度"].Points.Count >= 20)
                {

                    chart1.Series.Add("温度").Points.RemoveAt(0);
                }
                chart1.Series["温度"].Points.RemoveAt(0);

                xCount++;
                if (chart1.Series["湿度"].Points.Count >= 20)
                {

                    chart1.Series.Add("湿度").Points.RemoveAt(0);
                }
                chart1.Series["湿度"].Points.RemoveAt(0);


                chart1.Invalidate();


            }));
        }

        private void uiButtonOpenSerial_Click(object sender, EventArgs e)
        {
            if (serialPort != null)
            {
                if (serialPort.IsOpen != true)
                {
                    //Console.WriteLine(this.uiComboBoxSerial.SelectedItem.ToString());
                    serialPort.PortName = this.uiComboBoxSerial.SelectedItem.ToString();
                    serialPort.Open();
                }
            }
        }

        private void uiButtonCloseSerial_Click(object sender, EventArgs e)
        {
            if (serialPort != null)
            {
                serialPort.Close();
            }
        }
    }
}

这是部分代码,具体操作有一部分是连接数据库是实现的,下面是如何连接数据库的演示

二.操作讲解

1.打开SQL Server客户端

连接数据库之后创建一个表

这边是应为已经有了所以直接右键设置他的值,没有的话在表那右键创建一个表 ,之后就能创建他的表在设计哪里设计它的名字和设计它的浮点型等,从而更好实现自己的设计。

下面是c#中如何连接数据库的展示,在项目那里右键点击增加类函数如下图:

点击增加类后进入增加的界面,增加下面这个

 之后的界面中点击下一步

选择自己的数据库如我这里就是text,之后在选择自己创建的表

成功导入数据库后

之后就能在上读取自己设置的数据内容

三.容易出现的错误

在C#中实现与数据库的连接以支持环境监控时,可能会遇到多种错误。以下是一些常见的错误及其原因:

  1. 连接字符串错误
    • 连接字符串中的服务器名、数据库名、用户名或密码可能不正确。
    • 连接字符串可能使用了错误的提供者名称(如Data SourceServerInitial Catalog等关键字错误或遗漏)。
    • 如果数据库需要特定的连接参数(如端口号、加密方式等),而这些参数在连接字符串中未正确设置,也会导致连接失败。
  2. 网络问题
    • 数据库服务器可能无法从应用程序所在的机器访问(如防火墙、网络配置等)。
    • 数据库服务器可能未运行或正在维护中。
    • 网络延迟或不稳定可能导致连接超时。
  3. 数据库权限问题
    • 使用的数据库用户可能没有足够的权限来执行所需的操作(如读取、写入、执行存储过程等)。
    • 用户可能未被授予连接数据库的权限。
  4. 数据库驱动问题
    • 应用程序可能没有安装或引用正确的数据库驱动(如SQL Server的System.Data.SqlClient、MySQL的MySql.Data等)。
    • 使用的数据库驱动版本可能与数据库服务器版本不兼容。
  5. 资源限制
    • 数据库服务器可能已达到其最大连接数限制。
    • 应用程序可能没有足够的系统资源(如内存、文件句柄等)来建立新的数据库连接。
  6. 超时设置
    • 如果数据库操作需要很长时间才能完成,而连接或命令的超时设置又太短,那么可能会因为超时而失败。
  7. 代码错误
    • 在C#代码中可能存在逻辑错误,如尝试在未打开的连接上执行命令,或在不存在的表上执行查询等。
    • 代码可能未正确处理异常,导致连接泄露或资源未正确释放。
  8. 数据库维护或升级
    • 数据库可能正在进行备份、恢复或其他维护操作,导致连接被拒绝。
    • 数据库可能已升级,而应用程序使用的代码或驱动可能未更新以与新版本兼容。
  9. 加密和安全性问题
    • 如果数据库连接需要加密,而连接字符串中未指定加密方式或证书,则连接可能会失败。
    • 安全性设置(如Windows身份验证、SQL Server身份验证、SSL/TLS等)可能配置不正确或未启用。
  10. 数据库版本兼容性
    • 应用程序可能使用了某些特定于数据库版本的特性或函数,而这些特性或函数在目标数据库版本中不存在或已更改。

要解决这些问题,通常需要检查连接字符串、网络配置、数据库权限、驱动安装和版本、代码逻辑、超时设置、加密和安全性设置以及数据库版本兼容性等方面。此外,使用日志记录和异常处理来捕获和记录错误信息也是非常重要的,这有助于快速定位和解决问题。

  • 28
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值