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

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

我搜索了很多,并尝试使用datarowthis 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 开头

标签: c# mysql sql web-services xampp


【解决方案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";
    }   
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多