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)的答案很好,非常详细,但我认为这是您想要的东西。