我有这个代码,想让我从列中找到最后一个注册的MemberId,但是我无法让它工作,我有什么问题?
if (con.State == ConnectionState.Open)
{
con.Close();
}
con.Open();
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT top 1 * FROM Medleminfo ORDER BY MemberId desc";
cmd.ExecuteNonQuery();
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
foreach (DataRow dr in dt.Rows)
{
last_id = Convert.ToInt32(dr["MemberId"].ToString());
}
return last_id;
输出last_id应该在此方法中使用:
public DataTable display_tiger_info(int member_id)
{
if (con.State == ConnectionState.Open)
{
con.Close();
}
con.Open();
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = @"SELECT Medleminfo.MemberId, Medleminfo.Förnamn, Medleminfo.Efternamn,
Medleminfo.Adress, Medleminfo.Telefon, Tigerinfo.Tigernamn,Tigerinfo.Födelsedatum
FROM Medleminfo, Tigerinfo WHERE Medleminfo.MemberId = Tigerinfo.OwnerID ";
cmd.ExecuteNonQuery();
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
return dt;
}
答案 0 :(得分:0)
为什么不使用'Max'功能呢?这假设您正在寻找序列中的最大数字。你的问题措辞的方式虽然表明你应该有一个日期列来搜索。此外,如果您只想要一个结果,那么尝试执行标量而不是将其放入数据表并完成所有额外的工作。
int id = 0;
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using(var command = new SqlCommand("Select Max(MemberId) from Medleminfo", connection))
{
id = (int)command.ExecuteScalar();
}
}
答案 1 :(得分:0)
我认为你的问题可能是cmd.ExecuteNonQuery()
,根据msdn SqlCommand.ExecuteNonQuery Method对连接执行Transact-SQL语句并返回受影响的行数。
您可能希望在以下内容中使用ExecuteReader
if (con.State == ConnectionState.Open)
{
con.Close();
}
con.Open();
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
//All you want is the member Id why get all the columns
cmd.CommandText = "SELECT top 1 MemberId FROM Medleminfo ORDER BY MemberId desc";
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
last_id = Convert.ToInt32( reader[0]));
}
return last_id;
更新:此代码可能会解决您的问题,但我没有正确识别问题cmd.ExecuteNonQuery()
应该删除它没有做任何事情。 adapter.Fill()
应该执行命令,我不知道为什么你没有得到预期的响应。