台灣最大程式設計社群網站
線上人數
521
 
會員總數:245800
討論主題:189429
歡迎您免費加入會員
討論區列表 >> VB.NET >> 同時開啟兩個DataTable
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
同時開啟兩個DataTable
價值 : 10 QP  點閱數:253 回應數:5
樓主

假屍叮
門外漢
0 1
8 1
發送站內信

各位大師們大家好, 小弟剛加入這個網站, 有個小疑問想請問大家。
我目前想從mysql上面抓取兩個不同的資料表, 然後塞進我用C#程式碼生產出來的表格。
進而可以將兩個特定的欄位(來自不同表格)進行比較。

目前遇到的困擾是, 我知道一個Connection只能開啟一個DataReader,
於是我開啟了兩個Connection,各自開了一個DataReader抓取不同的資料表。
但是不管我開一個表格或是開兩個表格, 最後得到的結果都是只會顯示出其中一個表格。
請問這是什麼環節出錯了, 應該怎麼樣解決呢?

搜尋相關Tags的文章: [ DataReader ] ,
本篇文章發表於2020-02-12 13:29
1樓
回應

P陳
檢舉此回應
程式丟出來吧
否則沒人有辦法協助您
本篇文章回覆於2020-02-12 16:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

MIS2000 Lab
檢舉此回應
不知道這篇文章能否幫上忙?
試試看

[ADO.NET]DataSet裡面加入多個DataTable並命名,TableMappings.Add()方法
https://dotblogs.com.tw/mis2000lab/2016/01/08/dataset_datatable_tablemappings_add


本篇文章回覆於2020-02-12 22:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

假屍叮
檢舉此回應
string connString = "server=localhost;port=3306;user id=root;password=1234;database=forecast;charset=utf8;convert zero datetime=True;";
//第一個Connection
MySqlConnection conn = new MySqlConnection();
conn.ConnectionString = connString;
if (conn.State != ConnectionState.Open)
conn.Open();

if (conn == null)
MessageBox.Show("伺服器無法連接");

//DateTimePicker
string dtStart = dateTimePicker1.Text + " " + dateTimePicker2.Text;
string dtEnd = dateTimePicker3.Text + " " + dateTimePicker4.Text;


string sql = "SELECT startvalue from sensorsetup;";
MySqlCommand cmd = new MySqlCommand(sql, conn);
MySqlDataReader myData = cmd.ExecuteReader();


DataTable Oxygen = new DataTable();

Oxygen.Load(myData);
this.dgvOxygen.DataSource = Oxygen;
Oxygen.Columns[0].ColumnName = "啟動值";
this.dgvOxygen.Width = this.Width - 9;
this.dgvOxygen.Height = this.Height - 60;

//第二個Connection
string connString1 = "server=localhost;port=3306;user id=justin;password=1234;database=forecast;charset=utf8;convert zero datetime=True;";
MySqlConnection conn1 = new MySqlConnection();
conn1.ConnectionString = connString1;
if (conn1.State != ConnectionState.Open)
conn1.Open();

if (conn1 == null)
MessageBox.Show("伺服器無法連接");


string sql1 = "SELECT sid, DO, recordtime FROM dosensor WHERE sid IN(SELECT DISTINCT sid FROM sensorsetup) And recordtime >= '" + dtStart + "' And recordtime <= '" + dtEnd + "' And sid = '" + cmbSid.SelectedItem + "';";
MySqlCommand cmd1 = new MySqlCommand(sql1, conn1);
MySqlDataReader myData1 = cmd1.ExecuteReader();

if (!myData1.HasRows)
MessageBox.Show("查無資料");
else
{
DataTable Oxygen1 = new DataTable();

Oxygen1.Load(myData1);
this.dgvOxygen.DataSource = Oxygen1;

//dosensor資料表
Oxygen1.Columns[0].ColumnName = "感應器編號";
Oxygen1.Columns[1].ColumnName = "溶氧度";
Oxygen1.Columns[2].ColumnName = "紀錄時間";<pre lang="c#">

















以上就是我的程式碼QQ

本篇文章回覆於2020-02-12 22:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

P陳
檢舉此回應
這堿O無資料 或是有資料?

if (!myData1.HasRows)
MessageBox.Show("查無資料");
else
{
DataTable Oxygen1 = new DataTable();
本篇文章回覆於2020-02-14 11:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

jk01
檢舉此回應
//DataTable Oxygen1 = new DataTable(); //註解掉

Oxygen.Load(myData1); //Oxygen用上一個資料表來裝
this.dgvOxygen.DataSource = Oxygen; //DataGridView 綁定的DataTable 要同一個.

你最後的 this.dgvOxygen.DataSource = Oxygen1; 已經綁定Oxygen1 所以只會顯示dosensor 的搜尋結果並不會顯示sensorsetup
本篇文章回覆於2020-02-18 10:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.