0

I have a problem on how to split data from serial port and then save it to access database to its designated column. i found an example written in VB.net but i cannot find an example code written in c#. the serial data will be like this:

,230,302

,230,302

and continuously.

This is what i have written so far:

void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        Thread.Sleep(1000);
        string[] data = _serialPort.ReadExisting().Split(',');
        OleDbConnection connect = new OleDbConnection();
        connect.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\xp\Desktop\HydroDatabase.accdb";
        connect.Open();
        OleDbCommand command = new OleDbCommand();
        command.CommandText = "INSERT Into HydroLog(WaterFlow,TurbineRPM) Values(@data1, @data2)", connect); 
    }
4

2 回答 2

0

您需要在执行之前添加它。

command.Parameters.Add("@data1", OldeByType.VarChar).Value = data[0];
command.Parameters.Add("@data2", OldeByType.VarChar).Value = data[1];
于 2013-05-15T11:56:19.717 回答
0

您需要使用该using语句来处置资源。您的字符串拆分将在开头产生一个空条目,因此请尝试使用StringSplitOptions.

const string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\xp\Desktop\HydroDatabase.accdb";
const string commandText = "INSERT Into HydroLog(WaterFlow,TurbineRPM) Values(@data1, @data2)";

string[] data = _serialPort.ReadExisting().Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

using(var connect = new OleDbConnection(connectionString))
{
    using(var command = new OleDbCommand(commandText, connect))
    {
        command.Parameters.AddWithValue("@data1", data[0]);
        command.Parameters.AddWithValue("@data2", data[1]);

        connect.Open();
        command.ExecuteNonQuery();
    }
}
于 2013-05-15T12:04:26.487 回答