如何从多个数据库列中以逗号分隔的字符串检索记录?

时间:2010-12-30 07:34:49

标签: asp.net vb.net

这是我的数据库的结构:

alt text

我的ASP.NET(VB.NET)webform中有textbox1和textbox2以及8个复选框。

我想检索特定日期的座位意味着如果我在textbox1中输入11/12/2010然后在textbox2中输出将来自seat_select列,比如说(1,2,3)其中date将是11 / 12/2010

如果我在textbox1中输入13/12/2010,那么在textbox2中输出将为1,2

如何在VB.NET中执行此操作?

3 个答案:

答案 0 :(得分:0)

我不确定这是不是你的意思,但是 - 从广义上讲 - 我会执行select以从数据库中获取相关数据并在阅读器上迭代我将使用Split拆分seat_select并添加列表中的每个元素。 然后我会使用Linq的Distinct删除重复项并显示它。

希望这就是你的意思,这有助于

答案 1 :(得分:0)

您可以使用以下查询返回一个逗号单独的seat_select列表,然后使用linq对返回的数据执行不同的操作。

declare @seats nvarchar(max)
select @seats = seat_select + ',' +  isnull(@seats,'') from tableName where [date] ='11/12/2010'
return @seats

答案 2 :(得分:0)

标记:

<asp:TextBox runat="server" ID="txtDate" />
<asp:Button runat="server" ID="cmdGet" Text="Get" OnClick="cmdGet_Click" />
<asp:TextBox runat="server" ID="txtSeat" />

代码隐藏(C#) - 表示层上的格式化:

protected void cmdGet_Click (object sernder, EventArgs e)
{
    DateTime d;
    if (!DateTime.TryParseExact(txtDate.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out d))
        throw new InvalidOperationException("Input was in incorrect format");

    using (SqlConnection connection = new SqlConnection(connectionString))
    using (SqlCommand command = connection.CreateCommand())
    {
        command.CommandText = "SELECT seat_select FROM table_seats WHERE date <= @date";
        command.Parameters.AddWithValue("@date", d);

        connection.Open();
        using (SqlDataAdapter adapter = new SqlDataAdapter(command))
        using (DataTable table = new DataTable())
        {
            adapter.Fill(table);
            txtSeat.Text = String.Join(", ", table.AsEnumerable().Select(r => r.Field<int>("seat_select")));
        }
    }
}

不要忘记添加对System.Data.DataSetExtensions.dllSystem.Core.dll

的引用

代码隐藏(C#) - 数据层格式化:

protected void cmdGet_Click (object sernder, EventArgs e)
{
    DateTime d;
    if (!DateTime.TryParseExact(txtDate.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out d))
        throw new InvalidOperationException("Input was in incorrect format");

    using (SqlConnection connection = new SqlConnection(connectionString))
    using (SqlCommand command = connection.CreateCommand())
    {
        command.CommandText = "DECLARE @seats NVARCHAR(MAX); SELECT @seats = COALESCE(@seats + ', ', '') + seat_select FROM table_seats WHERE date <= @date";
        command.Parameters.AddWithValue("@date", d);

        connection.Open();
        txtSeat.Text = (string)command.ExecuteScalar();
    }
}