注册 登录
编程论坛 SQL Server论坛

数据库语法

wube 发布于 2018-01-29 17:30, 3711 次点击
如何取得查询数据库后取得之资料笔数及将资料存入阵列中?
12 回复
#2
wube2018-01-29 18:14
试出来查询笔数指令是 ...
Select COUNT(*) FROM [AAA] where [Time]='2018-01-29'

取得之资料笔数及将资料存入阵列只找到C#版没VB的...
看不懂...

http://blog.(table+to+array)

c# 將資料表取出放到陣列 (table to array)

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data; //使用DataTable必須的
using System.Data.SqlClient; //取得SqlClient相關物件必須的
using System.Globalization;

public partial class Update : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
    {
    }
protected void Button1_Click(object sender, EventArgs e)
    {
//建立連線物件
ConnectionStringSettings WORKFLOWGP =  ConfigurationManager.ConnectionStrings["WORKFLOWGP"];
        SqlConnection conn = new SqlConnection();
        conn.ConnectionString = WORKFLOWGP.ConnectionString;
        conn.Open();
string queryStr = "SELECT  TD001+'-'+RTRIM(TD002)+'-'+TD003,TD015 FROM PURTC INNER JOIN PURTD ON TC001 =
                          TD001 AND TC002 = TD002 WHERE  TD016 = 'N' AND TC014 = 'Y'";
        SqlDataAdapter oda = new SqlDataAdapter(queryStr, conn);
        DataTable  dt = new DataTable("PURTD");

//利用SqlDataAdapter的Fill方法將DB取出的data塞入DataTable中,再利用DataTable取出值
oda.Fill(dt);

//從DB Load  Data到Array
object[][] LoadData = new object[dt.Rows.Count][];
for (int i = 0; i < dt.Rows.Count; i++)
        {
            LoadData[i] = new object[dt.Columns.Count];
for (int j = 0; j < dt.Columns.Count; j++)
            {
                LoadData[i][j] = dt.Rows[i][j].ToString();
            }
       }

//最後將收集起來的資料存取在陣列中
//Object[][]  LoadData = listResult.ToArray();
#3
wube2018-01-29 18:23
https://
#4
mywisdom882018-01-30 11:54
比如你的数据结构是这样的
SQL表(id,字段1,字段2,字段3,日期)
你可以在最后或者最前,增加1个记录,就可以了.

select id,字段1,字段2,字段3,日期 from SQL表 where 日期='2018-01-29'
union all
select count(id),null,null,null,null from SQL表 where 日期='2018-01-29'

这样,就在最后1行,增加了1条记录,也就是你说的记录数,这个记录数,放在那行,就要看你具体情况了.
#5
wube2018-01-30 17:53
以下是引用mywisdom88在2018-1-30 11:54:35的发言:

比如你的数据结构是这样的
SQL表(id,字段1,字段2,字段3,日期)
你可以在最后或者最前,增加1个记录,就可以了.

select id,字段1,字段2,字段3,日期 from SQL表 where 日期='2018-01-29'
union all
select count(id),null,null,null,null from SQL表 where 日期='2018-01-29'

这样,就在最后1行,增加了1条记录,也就是你说的记录数,这个记录数,放在那行,就要看你具体情况了.


我的需求是要知道我查找出符合条件的资料共有几笔〜
之后才方便用循环〜
将每笔中选择的栏位资料加上HTML码(表格)〜
最后再邮寄出去〜

功能是使用者在网站内新增资料后〜系统能将使用者该日新增的资料寄出给相关人员〜

现在这三个需求不知道怎么组合〜最烂的方法是连续查三次〜

Protected Sub lbUpdata_Click(sender As Object, e As System.EventArgs) Handles lbUpdata.Click
Dim SQL As String
Dim ProjectItemCount As Integer = 0
Dim DHDate As String = Date.Today.Year & "-" & Date.Today.Month & "-" & Date.Today.Day
SQL = "SELECT * FROM [tblProjectDevpHistory] ​​where [DHDate] = '" & DHDate & "' And [CreatorNo] = '" & Session("LoginNo") & "'" '取出当日该员变更专案项目
SQL = "SELECT DISTINCT [ProjectNo] FROM [tblProjectDevpHistory] ​​where [DHDate] = '" & DHDate & "' And [CreatorNo] = '" & Session("LoginNo") & "'" '取出当日该员变更专案号码列表
SQL = "SELECT COUNT(*) FROM [tblProjectDevpHistory] ​​where [DHDate] = '" & DHDate & "' And [CreatorNo] = '" & Session("LoginNo") & "'" '计算取出当日该员变更专案项目数量
        Try
            SqlDataSource1 = New SqlDataSource
            SqlDataSource1.ProviderName = strDbType
            SqlDataSource1.ConnectionString = WebConfigurationManager.ConnectionStrings(strCnnType & "DbAAA").ConnectionString
            SqlDataSource1.SelectCommand = SQL
            SqlDataSource1.DataSourceMode = SqlDataSourceMode.DataSet
            args = New DataSourceSelectArguments
            Dim my_DV As Data.DataView = SqlDataSource1.Select(args)
            lvManufactureFT_AList.DataSource = my_DV
                        '???
        Catch ex As Exception
            Dim strErr As String = "●●● 程式错误讯息如下●●●" & "\n\n" & Replace(Replace(Replace(Replace(Trim(ex.ToString()), Chr(10), "") , Chr(13), ""), "\", "\\"), "'", "\'")
            ScriptManager.RegisterStartupScript(Me, Me.GetType(), "alert", "alert('" & strErr & "');", True)
        Finally
            SqlDataSource1.Dispose()
        End Try
    End Sub
#6
wube2018-01-30 18:09
要是能查完直接将数据存入阵列中~其他就简单了~
#7
wube2018-01-30 19:27
试出来了〜剩下就是纯VB的事了〜
程序代码:

.....
Dim my_DV As Data.DataView = SqlDataSource1.Select(args)
Dim dt As System.Data.DataTable = my_DV.Table
Dim Temp(my_DV.Count - 1, dt.Columns.Count - 1) As String
    For i = 0 To (my_DV.Count - 1)
        For j = 0 To (dt.Columns.Count - 1)
            Temp(i, j) = dt.Rows(i).Item(j).ToString
        Next j
    Next i
.....
#8
mywisdom882018-01-30 23:58
-- 测试数据
/*
create table #TT(ID int,fName varchar(20),fScore numeric(10,2),fDate datetime)
insert into #TT
select 1,'张三',25.50,'2018-01-29' union all
select 2,'张三',25.50,'2018-01-29' union all
select 3,'张三',25.50,'2018-01-29' union all
select 4,'张三',25.50,'2018-01-29' union all
select 5,'张三',25.50,'2018-01-29' union all
select 6,'张三',25.50,'2018-01-30' union all
select 7,'张三',25.50,'2018-01-30' union all
select 8,'张三',25.50,'2018-01-30' union all
select 9,'张三',25.50,'2018-01-30' union all
select 10,'张三',25.50,'2018-01-30' union all
select 11,'张三',25.50,'2018-01-30' union all
select 12,'张三',25.50,'2018-01-31'
*/
select id=0,fName=null,fScore=null,fDate=null,fId=count(fDate) from #TT where fDate='2018-01-29'
union all
select id,fName,fScore,fDate,fid=0 from #tt where fDate='2018-01-29'
只有本站会员才能查看附件,请 登录
#9
mywisdom882018-01-31 00:00
这个是在SQL直接查询出来的。
你可以规定ID=0时,fId的值就是你记录的个数,其他的fId都是0的
不就是你要的结果吗
#10
wube2018-01-31 17:39
以下是引用mywisdom88在2018-1-31 00:00:05的发言:

这个是在SQL直接查询出来的。
你可以规定ID=0时,fId的值就是你记录的个数,其他的fId都是0的
不就是你要的结果吗



原来还有这招~

fId 是原本资料表没有被暂时加入的吗?

[此贴子已经被作者于2018-1-31 17:43编辑过]

#11
mywisdom882018-01-31 23:05
是的,查询时,可以临时增加某列的
#12
wube2018-02-01 05:04
这真是太神奇了,很好用的功能,既然栏位能临时增加,那能不能同时查询多个存在的资料表,
再将各表栏位集合到一个不存在暂存的资料表中?

若可以仅需SQL语法即可实现吗?还是要在SQL SERVER上建立什么预存函式或什么其他特殊设定?

我要的功能已经全部开发完成,也验证过了,剩下就等使用者在测试伺服器上进行大量测试,
看还有没有BUG了。或是使用者觉得我做太快也许会再加新需求,因为预订给四个月时间开发,
结果一天就完成(用不是很成熟的方法实现)。
#13
mywisdom882018-02-01 08:58
可以,你告诉你的各位资料表,然后要什么结果
1