我有一个表格,其中包含学生的名字,姓氏,班级等,每个学生都有自己的"学生代码"。我想输入一个"学生代码"并返回具有指定学生代码的行的值。
我搜索了很多,我试图使用像这个问题这样的datarow
。
这是我的代码:
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";
}
正如Sami Kuhmonen所建议的那样,你不需要1行的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";
}
好的,您已经打开了与数据库的连接 - 这是第一步。 但是,在完成此操作之后,您可能希望使用SqlCommand和SqlDataReader。 我注意到你已经有一个MySqlCommand变量 - 但你只是把它设置为一个空白命令。
MySqlCommand cmd = new MySqlCommand();
。那不是你想要的。 您希望将该"cmd"变量设置为要运行的命令。
然后,一旦你完成了这些事情,你将需要做一些事情,比如:
using (SqlDataReader reader = cmd.ExecuteReader())
{
data = new DataTable();
data.Load(reader);
}
conn.Close();
希望这有所帮助。 祝你好运:-(