Вставить элементы списка в несколько полей в базе данных c # - PullRequest
0 голосов
/ 23 декабря 2011

У меня есть 3 элемента (частота пульса, уровень кислорода, дата / время) в моем списке.Данные в моем списке считываются из COM-порта.Я хотел бы вставить эти 3 элемента в 3 различных поля таблицы базы данных.Как я могу это сделать?

int numberOfBytesToRead = 125;
if (bBuffer.Count >= numberOfBytesToRead)
{
    this.Invoke(new Action(() =>
        listBox1.Items.Add("SP: " + (bBuffer[43].ToString()) + "  " + " HR: " 
        + bBuffer[103].ToString() +"  " + " Time: " + DateTime.Now.ToString())
    ));
    bBuffer.RemoveRange(0, numberOfBytesToRead);
}

string strConnString = ConfigurationManager.ConnectionStrings["BMS.Properties.Settings.BMS"].ConnectionString;
SqlConnection myConnect = new SqlConnection(strConnString);

try
{
    string strCmd = "INSERT INTO DimRecords ( PulseRate, OxygenLevel, PatientID, DateOfMonitoring) ";
    strCmd += " VALUES ( @PR, @OL, @ID, @Date)";

    SqlCommand cmd = new SqlCommand(strCmd, myConnect);
    cmd.Parameters.AddWithValue("@PR", listBox1.Text );
    cmd.Parameters.AddWithValue("OL",listBox1.Text );
    cmd.Parameters.AddWithValue("@ID", labelID.Text );
    cmd.Parameters.AddWithValue("@Date",listBox1.Text );
    myConnect.Open();
    int result = cmd.ExecuteNonQuery();
    if (result > 0)
    {
        MessageBox.Show("Data Inserted");                  
    }
    else
    {
        MessageBox.Show("Error!");
    }
    myConnect.Close();
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message.ToString());
}

Ответы [ 2 ]

1 голос
/ 23 декабря 2011

Измените свой код, чтобы он был примерно таким:

int numberOfBytesToRead = 125;
if (bBuffer.Count >= numberOfBytesToRead)
{
    this.Invoke(new Action(() =>
        listBox1.Items.Add(string.Format("SP: {0}, HR: {1}, Time: {2}", 
                                            bBuffer[43].ToString(),
                                            bBuffer[103].ToString(),
                                            DateTime.Now.ToString()                    
    ))));
    bBuffer.RemoveRange(0, numberOfBytesToRead);
}

.....
foreach (var item in listBox1.Items)
{
    InsertToDatabase(item.ToString());
}

private void InsertToDatabase(string input)
{
    using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["BMS.Properties.Settings.BMS"].ConnectionString))
    using (var cmd = conn.CreateCommand())
    {       
        string[] items = input.Split(new char[]{':',','},StringSplitOptions.RemoveEmptyEntries);
        string sp = items[1];
        string hr = items[3];
        string time = items[5];
        conn.Open();
        cmd.CommandText = @"INSERT INTO DimRecords (PulseRate,OxygenLevel,PatientID,DateOfMonitoring)  
                             VALUES (@PR,@OL,@ID,@Date)";

        cmd.Parameters.AddWithValue("@PR", hr);
        cmd.Parameters.AddWithValue("@OL", sp);
        cmd.Parameters.AddWithValue("@ID", labelID.Text);
        cmd.Parameters.AddWithValue("@Date", time);

        int result= cmd.ExecuteNonQuery().ToString();            
    }
    MessageBox.Show((result > 0) ? "Data Inserted" : "Error");
}
1 голос
/ 23 декабря 2011

Вам нужен запрос, подобный этому

//for update
update table set column1=val,column2= value, column3= value wherer condition
//for insert data 
Insert into tablename values(val1,val2,val3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...