获取具有指定 id 的表中的行的值

Posted

技术标签:

【中文标题】获取具有指定 id 的表中的行的值【英文标题】:get the values of a row in a table with specified id 【发布时间】:2018-09-01 10:16:19 【问题描述】:

我有一个表,其中包含学生的名字、姓氏、班级等,每个学生都有自己的“学生代码”。我想输入一个“学生代码”并取回具有指定学生代码的行的值。

我搜索了很多,并尝试使用datarow 像this question。

这是我的代码:

mysqlConnection connection = new MySqlConnection();
MySqlCommand cmd = new MySqlCommand();
DataTable dt = new DataTable();

[WebMethod]
public string Student_Information(string Student_Code)

    connection.ConnectionString = "server= ; userid= ; password= ; database= ;";
    connection.Open();

    string code = Student_Code;

    DataRow[] drs = dt.Select("student_code='" + code + "'");

    foreach (DataRow dr in drs)
    
        return "True";
    

    return "False";

【问题讨论】:

您需要什么帮助?代码是否有任何错误?它不工作? 您没有从数据库中加载任何内容。忘记 DataTables 等,只需找到有关如何使用 MySQL 的教程并从那里开始。 你曾经访问过数据库吗?您需要有数据来填充DataTable。您应该以this question first 开头 【参考方案1】:

好的,您已经打开了与数据库的连接 - 这是第一步。但是,在你完成之后,你可能会想要使用 SqlCommand 和 SqlDataReader。我注意到您已经有了一个 MySqlCommand 变量 - 但您只是将它设置为一个空白命令。

MySqlCommand cmd = new MySqlCommand();

...这不是你想要的。您想将该 'cmd' 变量设置为您要运行的命令。

然后,一旦你完成了这些事情,你将需要做一些类似的事情:

using (SqlDataReader reader = cmd.ExecuteReader())

    data = new DataTable();
    data.Load(reader);

conn.Close();

希望对您有所帮助。祝你好运:-)

【讨论】:

【参考方案2】:

正如 Sami Kuhmonen 建议的那样,您不需要 1 行的 DataTable。对关闭与数据库的连接后需要访问的多行使用 DataTable。

使用 MySqlCommand 和 ExecuteReader() 方法。然后您可以从记录集中读取列。

[WebMethod]
public string Student_Information(string Student_Code)

    using( var connection = new MySqlConnection(ConnectionString))
    
        connection.Open();
        using(var cmd = connection.CreateCommand())
        
            cmd.CommandText = "select FirstName, LastName, Class from student where student_code=@code";
            cmd.Parameters.AddWithValue("@code", Student_Code);
            var rs = cmd.ExecuteReader();

            if( rs.Read() )
            
                // read the data using something like
                var FirstName = rs["FirstName"].ToString();

                // or like this
                var LastName = rs.GetFieldValue<string>(rs.GetOrdinal("LastName"));
                return "True"; // as per your example
            
            else
            
                // student not found
            
            rs.Close();
        
    
    return "False";
   

【讨论】:

以上是关于获取具有指定 id 的表中的行的值的主要内容,如果未能解决你的问题,请参考以下文章

具有 30M 行的表中的 COUNT(*) 和 GROUP BY

获取插入到雪花数据仓库中的行的标识

用于从表中选择具有最新时间戳的行的 JOOQ 代码

基于其他表中的行的 PLSQL 更新

SQL Server中的组合

使用其他行的数据更新同一表中的行 SQL