VB.NET,两个SQL命令,构建一个字符串



im与vb.net(2010)编码一个程序,该程序可与本地数据库一起使用(.sdf -sql Server CE)。

现在,我需要执行两个选择命令。这里是一个理解我想要的示例:

SQL命令示例1:

SELECT A FROM tbl_Name

如果我使用sqlcedatareader阅读了此结果,我将得到以下以下内容:

詹姆斯

汤姆

Mike

SQL命令示例2:

SELECT B FROM tbl_Age

如果我使用sqlcedatareader阅读了此结果,我将得到以下以下内容:

14

15

16


问题是,如何构建一个字符串,该字符串最终包含一个类似的值 ->

詹姆斯; 14

tom; 15

mike; 16

我该怎么做?我知道我必须使用StringBuilder,然后使用AppendLine(),但是问题/问题是更多:如何将名称和年龄结合在一起?我该如何优雅地解决这个问题?我希望你可以帮助我。谢谢!BK _

更新:

不,他们没有任何关系。IM与SQL Server CE一起工作。

其他情况下,如果有一个表 UPDATE 可能,那将是非常好的。这意味着,如果我可以将这两个表更新为一个表格,例如:

tbl_personality列名称和列年龄

,而不是用tbl_personality sql *立即阅读

问题是这些表是如何相关的,您是否有table_age中的外键会导致tbl_name?然后,您可以使用JOIN和单个查询。

您可以填充List<User>,其中User是具有两个属性的自定义类:

public class User
{
    public string Name { get; set; }
    public int Age { get; set; }
}

现在使用INNER JOIN链接FK上的两个表,您可以获得每个名称的正确年龄:

string sql = @"SELECT n.Name,a.Age 
               FROM tbl_Name n 
               INNER JOIN tbl_Age a 
                  ON n.NameID=a.NameID
               ORDER BY Name, Age";

您可以在阅读所有记录时添加User的实例:

List<User> users = new List<User>();
using (var con = new System.Data.SqlClient.SqlCeConnection("Connection-String"))
using (var cmd = new SqlCeCommand(sql, con))
{
    con.Open();
    using (var rd = cmd.ExecuteReader())
    {
        while (rd.Read())
        {
            string name = rd.GetString(0);
            int age = rd.GetInt32(1);
            users.Add(new User { Name = name, Age = age });
        }
    }
}

如果要输出全部:

foreach (User u in users)
    Console.WriteLine("{0};{1}", u.Name, u.Age);

编辑:此处vb.net版本:

Dim users As New List(Of User)()
Using con = New System.Data.SqlClient.SqlCeConnection("Connection-String")
    Using cmd = New SqlCeCommand(sql, con)
        con.Open()
        Using rd = cmd.ExecuteReader()
            While rd.Read()
                Dim name As String = rd.GetString(0)
                Dim age As Integer = rd.GetInt32(1)
                users.Add(New User() With { _
                    Key .Name = name, _
                    Key .Age = age _
                })
            End While
        End Using
    End Using
End Using

主/外键会很好,但是,如果您只是想愚弄并让字符串concat,您就可以更轻松地做到这一点...

正如您已经说过的,您都对两者都进行了sqlcereader,因此您都有两个数据。

要组合它们,只需将一个读取器系列与另一个读取器行(例如

sqlDataReader1("Name") & ";" & sqlDataReader2("Age")

输出将为

James;14

您想要的

如果您将它们放在不同的subs中,则可以将它们合并为1,或者只使用一些变量,然后将变量组合在一起

dim namestr as string = string.empty
dim agestr as string = string.empty

然后您将其交给您的字符串变量

namestr = sqlDataReader1("Name")
agestr = sqlDataReader2("Age")

然后组合

namestr & ";" & agestr

输出也将是

James;14

蒂姆·施梅特(Tim Schmelter)的答案很好,非常详细,但我认为这是您想要的东西。

相关内容

  • 没有找到相关文章

最新更新