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();
}
為了計算 Count使用到 DataSet,消耗資源太多了
應該改用 DataReader
使用 SqlCommand的.ExecuteScalar()方法,專門用來做這件事喔
詳見「ASP.NET專題實務(I)」松崗出版,第十四章
或是 http://msdn.microsoft.com/zh-tw/library/system.data.sqlclient.sqlcommand.executescalar(v=vs.110).aspx
<pre class="c" name="code">Label1.Text = ds.Tables[0].Rows[0][0].ToString()
新增一個 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
SqlTransaction myTrans = conn.BeginTransaction();
這一行可以不需要,只有執行 query 何需要異動處理呢?
da1.Fill(ds);
Label1.Text = ds.Tables[0].Rows.Count.toString();
如果只要秀筆數的話使用
Label1.Text = sqlCmd1.ExcuteScalar("select count(*) from UBIQ_RTRF_Content where processSerialNumber=" + Label1.Text + "")
試試看,因為我還沒去跑VS
<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();