gpt4 book ai didi

c# - PHP 的 mysql_fetch_array 函数的 C# 等价物是什么?

转载 作者:行者123 更新时间:2023-11-30 14:14:45 24 4
gpt4 key购买 nike

我正在学习 C#/ASP.NET,我想知道以下 PHP 代码的 C# 等价物是什么?我知道 userid,我想从这个表中获取行到变量“row”的数组中,这样我就可以将它用作“row['name']”和“row['email']”。

$result = mysql_query("SELECT email, name FROM mytable WHERE id=7");

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
printf("Email: %s Name: %s", $row["email"], $row["name"]);
}

谢谢。

最佳答案

我不确定这是否与 mysql_fetch_array 相同,但我假设是这样。您可以使用 IDBCommmand.ExecuteReader创建一个 IDataReader并使用该行的所有字段填充 Object[]

例如(使用 SQL-Server):

// use using statements to ensure that connections are disposed/closed (all implementing IDisposable)
using (var con = new SqlConnection(Properties.Settings.Default.ConnectionString))
using (var cmd = new SqlCommand("SELECT email, name FROM mytable WHERE id=@id", con))
{
cmd.Parameters.AddWithValue("@id", ID); // use parameters to avoid sql-injection
con.Open();
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
var fields = new object[reader.FieldCount];
// following fills an object[] with all fields of the current line,
// is this similar to mysql_fetch_array?
int count = reader.GetValues(fields);
}
}
}

编辑:

I don't mean to make it as similar as possible, but how would I go about getting the same end result (a variable with the results) in C#

这是一个品味问题。您可以使用某种 ORM,例如 Enity-Framework、NHibernate、LINQ-To-SQL 或 Stackoverflow 的 Micro-ORM Dapper.NET (我目前正在使用的)或普通的 ADO.NET(如上所示)。

您可以使用使用 DataReaderDataTable 手动填充的自定义类,其架构会自动加载。

例如(这里使用MySQL):

DataTable tblEmail = new DataTable();
using (var con = new MySqlConnection(Properties.Settings.Default.MySQL))
using (var da = new MySqlDataAdapter("SELECT Email, Name FROM Email WHERE id=@id", con))
{
da.SelectCommand.Parameters.AddWithValue("@id", ID);
da.Fill(tblEmail);
}

if (tblEmail.Rows.Count == 1)
{
DataRow row = tblEmail.Rows[0];
String email = row.Field<String>("Email");
String name = row.Field<String>("Name");
}

如您所见,.NET 中有很多方法。我只用 ADO.NET 展示了两个。

关于c# - PHP 的 mysql_fetch_array 函数的 C# 等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11277058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com