iT邦幫忙

0

c# select 總筆數 怎麼秀到 畫面的Label1.Text 上呢?

select 總筆數 怎麼秀到 畫面的Label1.Text 上呢?
只會select 在 秀出的部份不了解

請大大們幫忙 謝謝~!

   protected void Button2_Click(object sender, System.EventArgs e)
        {
SqlConnection conn = new SqlConnection("Data Source=***;Initial Catalog= *** ;Persist Security Info=True;User ID=***;Password=***;");
conn.Open();
SqlTransaction myTrans = conn.BeginTransaction();
string sqlCmd1 = "select count(*) from UBIQ_RTRF_Content where processSerialNumber=" + Label1.Text + "";
SqlDataAdapter da1 = new SqlDataAdapter(sqlCmd1, conn);
DataSet ds = new DataSet();
da1.Fill(ds);

Label1.Text = ??????;

conn.Close();
        }
0
mis2000lab
iT邦好手 1 級 ‧ 2014-06-18 10:20:43
最佳解答

為了計算 Count使用到 DataSet,消耗資源太多了

應該改用 DataReader

使用 SqlCommand的.ExecuteScalar()方法,專門用來做這件事喔

詳見「ASP.NET專題實務(I)」松崗出版,第十四章
或是 http://msdn.microsoft.com/zh-tw/library/system.data.sqlclient.sqlcommand.executescalar(v=vs.110).aspx

0
wonton
iT邦高手 6 級 ‧ 2014-06-10 13:21:50
<pre class="c" name="code">Label1.Text = ds.Tables[0].Rows[0][0].ToString()
pp73793 iT邦新手 4 級 ‧ 2014-06-10 13:28:48 檢舉

Label1.Text = ds.Tables[0].Rows[0][0].ToString()

當指定給命令的連接為擱置的本機交易時,ExecuteReader 需要連接以交易。命令的 Transaction 屬性尚未初始化。
出現錯誤@@

pp73793 iT邦新手 4 級 ‧ 2014-06-10 13:30:48 檢舉

wonton iT邦高手 6 級 ‧ 2014-06-11 08:05:51 檢舉

myTrans

這個錯誤應該是 Transaction 沒有處理,你可以參考樓下兩層樓 danking 的回應。

0
rogeryao
iT邦高手 7 級 ‧ 2014-06-10 17:04:20

新增一個 textBox1 物件

string connectionString = "Data Source=***;Initial Catalog= *** ;Persist Security Info=True;User ID=***;Password=***";

string queryString = ""select count(*) from UBIQ_RTRF_Content where processSerialNumber="+textBox1.Text + ";";

SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
SqlDataAdapter da1 = new SqlDataAdapter(queryString, connection);
DataSet ds = new DataSet();
da1.Fill(ds);

label1.Text = ds.Tables[0].Rows[0][0].ToString();

connection.Close();

.Fill() 方法不需要手動(自己寫程式)開啟、關閉資料庫的連結

可以參閱這篇文章 --
[ADO.NET]DataSet與DataAdapter,為何不需要自己寫程式去開啟資料庫連線與關閉之?
http://www.dotblogs.com.tw/mis2000lab/archive/2009/11/26/dataset\_dataadapter\_connection\_open.aspx

0
danking
iT邦研究生 2 級 ‧ 2014-06-11 00:12:46

SqlTransaction myTrans = conn.BeginTransaction();
這一行可以不需要,只有執行 query 何需要異動處理呢?

da1.Fill(ds);
Label1.Text = ds.Tables[0].Rows.Count.toString();

wonton iT邦高手 6 級 ‧ 2014-06-11 08:07:19 檢舉

因為他的 sql 是 select count(*),所以 ds.Tables[0].Rows.Count 可能永遠只顯示 1 唷~

2
fgred
iT邦研究生 1 級 ‧ 2014-06-11 05:45:46

如果只要秀筆數的話使用

Label1.Text = sqlCmd1.ExcuteScalar("select count(*) from UBIQ_RTRF_Content where processSerialNumber=" + Label1.Text + "")

試試看,因為我還沒去跑VS

0
miels
iT邦新手 5 級 ‧ 2014-06-11 18:43:15
<pre class="c" name="code">
SqlCommand cmd = new SqlCommand("SQL Command",SqlConnect);
cmd.CommandType = CommandType.Text
if(string.IsNullOrEmpty(cmd.ExecuteScalar().ToString()))
    return "0";
else
    return cmd.ExecuteScalar().ToString();

我要發表回答

立即登入回答