討論區快速選單
知識庫快速選單
2018年Oracle資料庫12c系列課程 傑米的攝影旅遊筆記
[ 回上頁 ] [ 討論區發言規則 ]
ExecuteNonQuery()的問題
更改我的閱讀文章字型大小
作者 : 0912386736(凱)
[ 貼文 31 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/4/18 下午 09:56:02
https://www.devart.com/dotconnect/mysql/docs/Devart.Data~Devart.Common.DbCommandBase~ExecuteNonQuery.html
在上面網站中可以看到:
Return Type
For UPDATE, INSERT, and DELETE statements, the return value is the number of rows affected by the command. For all other types of statements, the return value is -1.

重點是:the number of rows affected by the command.

不過我寫程式去測試時,發現傳回值為1:
但是我明明INSERT INTO 兩個欄位name 跟password這兩行的資料,這樣為什麼傳回值不是2呢?
部分程式碼如下:

SQLConnect sqlC = new SQLConnect();
DataInfo[] vDI = new DataInfo[2];
for (int i = 0; i < 1000; i++)
{
vDI[0] = new DataInfo("name", "name" + i);
vDI[1] = new DataInfo("password", "pass" + i);
     sqlC.addData("account", vDI);
}

public class DataInfo
{
public string name;//欄位名稱
public object data;//欄位資料

public DataInfo (string _name, string _data)
{
name = _name;
data = _data;
}
}

SQLConnect::addData

public bool addData(string tableName, DataInfo[] vDataInfo)
{
  string cmdStr = "INSERT INTO account (";

  cmdStr += vDataInfo[0].name;
  for (int i = 1; i<vDataInfo.Length; i++)
  {
   cmdStr += ",";
   cmdStr += vDataInfo[i].name;
  }
  cmdStr += ") values ('";
  cmdStr += vDataInfo[0].data+"'";
  for (int i = 1; i < vDataInfo.Length; i++)
  {
   cmdStr += ",";
   cmdStr += "'"+vDataInfo[i].data+"'";
  }
  cmdStr += ") ;";
  command.CommandText = cmdStr;
  int CountT;
  try
  {
return (CountT=(int)((long)command.ExecuteNonQuery())) == 1;
  }
  catch
  {
return false ;
  }
}
作者 : 0912386736(凱)
[ 貼文 31 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/4/18 下午 10:00:46
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| name | varchar(20) | YES | | NULL | |
| password | varchar(20) | YES | | NULL | |
| loginCount | int(11) | YES | | 0 | |
| noLogin | bit(1) | YES | | b'0' | |
+------------+-------------+------+-----+---------+-------+
作者 : qazujm(joe) Visual Basic卓越專家C#優秀好手貼文超過1000則
[ 貼文 1521 | 人氣 2524 | 評價 9070 | 評價/貼文 5.96 | 送出評價 90 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/4/20 上午 09:43:41
>重點是:the number of rows affected by the command.

>不過我寫程式去測試時,發現傳回值為1:
>但是我明明INSERT INTO 兩個欄位name 跟password這兩行的資料,這樣為什麼傳回值不是2呢?

INSERT還是一列進去吧?所以傳回1囉...
 板主 : 麗達
 > mySQL - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - mySQL - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
mySQL
1 麗達 1240 
2 jabawork 400 
3 小朱 220 
4 Phoenix 200 
5 ench 140 
6 Aery 100 
7 ozzy 90 
8 jonathan321 90 
9 Aries 70 
10 Jasper 60 
mySQL
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.015625