Microsoft Visual Web Developer と C# ベースの ASP.Net を使用して、学校のプロジェクトとして Web サイトを開発しています。
データベースで形成されるユーザーを表す単純なクラスを実装しました。このクラスには、データベース内の列を表すメンバーと、DataTable の結果からインスタンスを作成するためのいくつかの静的メソッドがあります。次のコードが使用されます (MyDbase は、提供されたヘルプ クラスです)。
//User.cs, placed in A
using System;
public class User
{
private int id;
private String email;
private String firstName;
private String lastName;
private String username;
private String passwd;
private String birthDate;
private bool isMale;
private String phone;
private String avatarUrl;
private bool isAdmin;
... //Accessors and mutators
public User( int _id, String _email, String _firstName, String _lastName, String _username, String _passwd,
String _birthDate, bool _isMale, String _phone, String _avatarUrl, bool _isAdmin )
{
this.id = _id;
this.email = _email;
this.firstName = _firstName;
this.lastName = _lastName;
this.username = _username;
this.passwd = _passwd;
this.birthDate = _birthDate;
this.isMale = _isMale;
this.phone = _phone;
this.avatarUrl = _avatarUrl;
this.isAdmin = _isAdmin;
}
public static User getUserForSqlResult(System.Data.DataTable result)
{
User newUser = null;
if (result.Rows.Count == 1)
{
newUser = new User((int)result.Rows[0]["id"], (String)result.Rows[0]["email"],
(String)result.Rows[0]["firstName"], (String)result.Rows[0]["lastName"], (String)result.Rows[0]["username"],
(String)result.Rows[0]["passwd"], (String)result.Rows[0]["birthDate"], (bool)result.Rows[0]["isMale"],
(String)result.Rows[0]["phone"], (String)result.Rows[0]["avatarUrl"], (bool)result.Rows[0]["isAdmin"]);
}
return newUser;
}
public static User getUserById(int id)
{
System.Data.DataTable dt = MyDbase.SelectFromTable("select * from tUsers where id=" + id, "db.mdb");
return getUserForSqlResult(dt);
}
public void saveUserChanges()
{
MyDbase.ChangeTable("UPDATE tUsers SET email='" + this.email + "', firstName='" + this.firstName + "', lastName='" + this.lastName +
"', passwd='" + this.passwd + "', birthDate='" + this.birthDate + "', phone='" + this.phone + "', avatarUrl='" +
this.avatarUrl + "' WHERE id=" + this.id , "db.mdb");
}
}
select&update 関数が機能していることを確認するためだけに、次のサンプル コードを実行しようとしました (Default.aspx)。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
User user = User.getUserById(3);
user.setEmail("different@email.com");
user.saveUserChanges();
}
}
ただし、次のエラーが表示されます。
エラー 1 'System.Security.Principal.IPrincipal' には 'getUserById' の定義が含まれておらず、タイプ 'System.Security.Principal.IPrincipal' の最初の引数を受け入れる拡張メソッド 'getUserById' が見つかりませんでした (ディレクティブまたはアセンブリ参照を使用していますか?)
なぜこれが起こるのでしょうか?Tnx!