2011-12-23 59 views
-2

我的列表框中有3个元素(脉率,氧气水平,日期/时间)。我的列表框中的数据正在从COM端口读取。我想将这3个元素插入数据库表的3个不同的字段。我怎么做?插入列表框项目到数据库中的多个字段c#

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()); 
} 
+0

到目前为止,你做了什么。 ?分享您的代码 – 2011-12-23 06:18:11

+0

对不起,我的代码被上传。 – fb69 2011-12-23 06:21:05

+0

你已经发布了一些代码。什么不工作? – 2011-12-23 06:26:13

回答

1

查询修改你的代码是这样的:

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"); 
} 
+0

嗨坎贝尔,谢谢你的回复。我可否知道。这段代码的作用是什么? string [] items = listBox1.Items [0] .ToString()。Split(new char [] {':',',',StringSplitOptions.RemoveEmptyEntries); string sp = items [1]; string hr = items [3]; string time = items [5]; 非常感谢您的时间。 – fb69 2011-12-23 07:21:28

+0

如果列表框数据包含多行,我可以创建一个for循环吗?这样可以插入列表框中的所有数据? – fb69 2011-12-23 07:24:47

+0

嗨,坎贝尔,谢谢你的代码。有用!但是,有一个小问题。将数据插入数据库之后。我意识到没有。数据库中的行数多于no。列表框中的项目。我已经删除了以前的数据。 – fb69 2011-12-27 03:31:27

1

都需要这样的

//for update 
update table set column1=val,column2= value, column3= value wherer condition 
//for insert data 
Insert into tablename values(val1,val2,val3) 
相关问题