0

StudentテーブルからStudentIDを取得し、それをデータリーダーまたはデータセットに保存し、それを使用して別のテーブルであるUsersテーブルを更新する方法を知っている人はいますか?ユーザーのユーザー名とパスワードをデフォルトとしてStudentIDにします。 。ところで、これはC#ASP.NETです。これが私のコードです。

    SqlConnection conUpdate = new SqlConnection(GetConnectionString());
    conUpdate.Open();

    SqlCommand com2 = new SqlCommand();
    com2.Connection = conUpdate;
    com2.CommandText = "SELECT Students.StudentID, Users.UserID FROM Students, Users " +
        "WHERE Students.UserID = Users.UserID";

    int UserId = ((int)com2.ExecuteScalar());

    com2.CommandText = "SELECT MAX(StudentID) FROM Students";

    int StudentId = ((int)com2.ExecuteScalar());

    com2.CommandType = CommandType.Text;
    com2.CommandText = "UPDATE Users SET UserName=@UserName, Password=@Password WHERE UserID=@UserID";

    com2.Parameters.Add("@UserName", SqlDbType.NVarChar);
    com2.Parameters.Add("@Password", SqlDbType.NVarChar);

    com2.Parameters[0].Value = reader;
    com2.Parameters[1].Value = reader;

    com2.ExecuteNonQuery();
    conUpdate.Close();
    conUpdate.Dispose();
4

3 に答える 3

0

コマンドcom2.CommandText = "SELECT MAX(StudentID) FROM Students";は Max 学生 ID を返しますが、これはおそらく必要ありません。以前のコマンドcom2.CommandText = "SELECT Students.StudentID, Users.UserID ....は、学生のユーザー ID を取得するために必要なものです。

以下のようにデータリーダー(接続指向)を使用できます。

SqlDataReader reader = com2.ExecuteReader();
while (reader.Read())
{
     int UserId = Convert.ToInt(reader[0]);// or reader["UserID"]
}
reader.Close();

または、次のようにDataAdapter (切断モード)を使用できます。

SqlDataAdapter a = new SqlDataAdapter(com2, connection);
DataTable dt = new DataTable();
a.Fill(dt);

これで、dt.Rows["UserID"]必要な UserID が取得されます。

これを見たいかもしれません: http://www.dotnetperls.com/sqldataadapter

于 2012-06-22T05:59:42.330 に答える
0

私があなたを正しく理解していれば、次のコードが機能する可能性があると思います。または、少なくとも、どうすればそれを実行できるかについてのアイデアを提供してください。各生徒の UserName と Password をデフォルトで StudentID に設定することを想定しています。

    SqlConnection conUpdate = new SqlConnection(GetConnectionString());
    conUpdate.Open();

    SqlCommand com2 = new SqlCommand();
    com2.Connection = conUpdate;
    com2.CommandType = CommandType.Text;
    com2.CommandText = "SELECT Students.StudentID, Users.UserID FROM Students, Users " +
        "WHERE Students.UserID = Users.UserID";

    SqlDataReader reader = com2.ExecuteReader();

    if(reader != null)
    {
        while(reader.Read())
        {
            SqlCommand com3 = new SqlCommand();
            com3.Connection = conUpdate;
            com3.CommandType = CommandType.Text;
            com3.CommandText = "UPDATE Users SET UserName=@UserName, Password=@Password WHERE UserID=@UserID";
            // Assuming that you need both the UserName and Password to default to StudentID
            com3.Parameters.AddWithValue("@UserName", reader.GetString(0)); // Assuming StudentID is NVARCHAR
            com3.Parameters.AddWithValue("@Password", reader.GetString(0)); // Assuming StudentID is NVARCHAR
            com3.Parameters.AddWithValue("@UserID", reader.GetString(1)); // Assuming UserID is NVARCHAR
            com3.ExecuteNonQuery();                
        }
        reader.Close();
    }

    conUpdate.Close();
于 2012-06-22T05:59:57.487 に答える
0

選択クエリで既に UserId を取得しているため、DataReader を使用して値を取得する必要があります。このような:

// Execute the query
SqlDataReader rdr = cmd.ExecuteReader();
int UserId;
while(rdr.Read())
{
  UserId = Convert.ToInt32(rdr["UserID"].ToString());
}
于 2012-06-22T05:54:41.407 に答える