我有1個資料庫共有30個欄位,欄位名為id,欄位2,欄位3,... 欄位30,我想只連接一次資料庫,然后在資料庫中依次查詢以下三種符合條件的記錄,查找到后取出該記錄的欄位2,欄位3,... 欄位30的數值。
1、查找 id = “xxxxxx01" 的記錄,將欄位2,欄位3,... 欄位30的數值依次取出來。
2、查找 id = “xxxxxx02" 的記錄,將欄位2,欄位3,... 欄位30的數值依次取出來。
3、查找 id = “xxxxxx04" 的記錄,將欄位2,欄位3,... 欄位30的數值依次取出來。
以下是我的代碼,但是有問題,請大家幫忙指正。
try
{
MySqlConnection COMconn = null;
string COMconStr = "server=localhost;port=3306;user Id=root;password=winelec68331; database=cableid;Allow User Variables=True"; //連接字串
COMconn = new MySqlConnection(COMconStr);
COMconn.Open();
//查詢 id = “xxxxxx01" 的記錄,將欄位2,欄位3,... 欄位30的數值依次取出來
string COM1sql = "select * from table1 where id = '" + "xxxxxx01" + "'";
MySqlCommand COM1Cmd = new MySqlCommand(COM1sql, COMconn);
MySqlDataReader COM1db = COM1Cmd.ExecuteReader();
if (COM1db.Read())
{
parameters_buffer[0] = Convert.ToInt32(COM1db["欄位2"]); //--->取出欄位2的數值
parameters_buffer[1] = Convert.ToInt32(COM1db["欄位3"]); //--->取出欄位3的數值
}
//查詢 id = “xxxxxx02" 的記錄,將欄位2,欄位3,... 欄位30的數值依次取出來
string COM2sql = "select * from table1 where id = '" + "xxxxxx02" + "'";
MySqlCommand COM2Cmd = new MySqlCommand(COM2sql, COMconn);
MySqlDataReader COM2db = COM2Cmd.ExecuteReader();
if (COM2db.Read())
{
parameters_buffer[2] = Convert.ToInt32(COM1db["欄位2"]); //--->取出欄位2的數值
parameters_buffer[3] = Convert.ToInt32(COM1db["欄位3"]); //--->取出欄位3的數值
}
//查詢 id = “xxxxxx03" 的記錄,將欄位2,欄位3,... 欄位30的數值依次取出來
string COM3sql = "select * from table1 where id = '" + "xxxxxx03" + "'";
MySqlCommand COM3Cmd = new MySqlCommand(COM3sql, COMconn);
MySqlDataReader COM3db = COM3Cmd.ExecuteReader();
if (COM3db.Read())
{
parameters_buffer[4] = Convert.ToInt32(COM1db["欄位2"]); //--->取出欄位2的數值
parameters_buffer[5] = Convert.ToInt32(COM1db["欄位3"]); //--->取出欄位3的數值
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);//輸出錯誤資訊
}
finally
{
COMconn.Close();
}
uj5u.com熱心網友回復:
if 改為whileuj5u.com熱心網友回復:
查找 id = “xxxxxx01" 的記錄 OK,但是查找 id = “xxxxxx02" 的記錄時,系統報告:資料庫打開或連接有問題。
uj5u.com熱心網友回復:
你現在就是連一次資料啊,COMconn只Open一次。是不是想用一條SQL陳述句實作查詢?方法一(不建議):
select * from table1 where id=1
union
select * from table1 where id=2
union
select * from table1 where id=3
方法二:
select * from table1
一個陳述句將資料的全查出來,存入一個DataTable里,名為dt1吧。然后通過DataTable的Select方法進行查詢資料
DataRow[] drs = dt1.Select("id=1")
如果drs.Length不為0,則查詢到符的結果,你再將其取出就OK啦
uj5u.com熱心網友回復:
你后面代碼參照第一條改啊,改sqlcommand的sql陳述句,然后繼續讀就是了啊。
uj5u.com熱心網友回復:
不用使用3個sqlcommanduj5u.com熱心網友回復:
你現在就是連一次資料啊,COMconn只Open一次。是不是想用一條SQL陳述句實作查詢?
方法一(不建議):
select * from table1 where id=1
union
select * from table1 where id=2
union
select * from table1 where id=3
方法二:
select * from table1
一個陳述句將資料的全查出來,存入一個DataTable里,名為dt1吧。然后通過DataTable的Select方法進行查詢資料
DataRow[] drs = dt1.Select("id=1")
如果drs.Length不為0,則查詢到符的結果,你再將其取出就OK啦
我想用3條SQL陳述句實作查詢。
第一條SQL陳述句,查詢id = “xxxxxx01" 的記錄,然后取出該記錄 欄位2,欄位3,...,欄位30的數值。
第二條SQL陳述句,查詢id = “xxxxxx02" 的記錄,然后取出該記錄 欄位2,欄位3,...,欄位30的數值。
第三條SQL陳述句,查詢id = “xxxxxx03" 的記錄,然后取出該記錄 欄位2,欄位3,...,欄位30的數值。
uj5u.com熱心網友回復:
直接select * from table1 where id IN( 'xxxxxx01','xxxxxx02','xxxxxx03')不就好了然后
while (db.Read())
{
string id = Convert.ToString(db["id"]);
switch (id)
{
case "xxxxxx01":
//相關操作
break;
case "xxxxxx02":
//相關操作
break;
case "xxxxxx03":
//相關操作
break;
}
}
uj5u.com熱心網友回復:
直接select * from table1;select * from table2;select * from table3;用dataset 保存 取dataset[0],dataset[1],dataset[2]
uj5u.com熱心網友回復:
直接select * from table1;select * from table2;select * from table3;
用dataset 保存 取dataset[0],dataset[1],dataset[2]
id = “xxxxxx01" 的記錄 在table1表內
id = “xxxxxx02" 的記錄 也在table1表內
id = “xxxxxx03" 的記錄 也在table1表內
它們都在table1表內,它們在表內不同的記錄號上
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/269886.html
標籤:C#
上一篇:datagridview求和問題
