私はC#でN層のtecを使って作業し、使いやすく、すべてのコードを書き直すことなくデータベースの種類を変更できるようにしています。ここのコードではエラーは発生しませんが、取得されません。私のテキストボックスへの値
(後で更新するためにテーブルから多くのテキストボックスにデータを取得しようとしています)とここでコードがどのように機能するか:{最初に、任意の種類のパラメーターを設定したり、任意のコマンドを設定したりする関数をいくつか作成します。次に、他の関数を作成して、設定したものを実行したり、データベースから取得したりするすべての関数をフォルダー名(データアクセス層)に作成します。次に、他のフォルダー(データビルドレイヤー)を作成して、任意のページ(挿入、更新、削除、選択)で実行したいすべての関数を使用します。最後に、で作成した関数を呼び出すために実行すると思います。 (データビルドレイヤー)私のページまたはコントロールに、データベースタイプを変更した場合、1つのクラスのみを変更し、他のクラスは同じままであるため、すべてを実行します(英語が不十分で申し訳ありません)}
コード:
クラスDataAccessLayer
public static void Setcommand (SqlCommand cmd,CommandType type,string commandtext)
{
cmd.CommandType=type;
cmd.CommandText=commandtext;
}
public static void AddSQLparameter(SqlCommand cmd, int size,SqlDbType type,object value,string paramName,ParameterDirection direction)
{
if (cmd == null)
{
throw (new ArgumentException("cmd"));
}
if (paramName == null)
{
throw (new ArgumentException("paramName"));
}
SqlParameter param=new SqlParameter();
param.ParameterName= paramName;
param.SqlDbType=type;
param.Size=size;
param.Value=value;
param.Direction=direction;
cmd.Parameters.Add(param);
}
public static SqlDataReader ExecuteSelectCommand(SqlCommand cmd)
{
if (cmd == null)
{
throw (new ArgumentNullException("cmd"));
}
SqlConnection con = new SqlConnection();
cmd.Connection = con;
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
con.Close();
return dr ;
}
クラスDatabuildLayer
SqlCommand com;
public DatabuildLayer()
{
com = new SqlCommand();
//
// TODO: Add constructor logic here
//
}
public SqlDataReader SelectCatalog(int catid)
{
DataAccessLayer.Setcommand(com, CommandType.Text, "select catname,catdescription,photo from category where catid=@catid" );
DataAccessLayer.addSQLparameter(com,16,SqlDbType.Int,catid,"@catid",ParameterDirection.Input);
return DataAccessLayer.ExecuteSelectCommand(com);;
}
ここに、データをテキストボックスに取得する最後のコードがあります
私のページロードで:
protected void Page_Load(object sender, EventArgs e)
{
DatabuildLayer= new DatabuildLayer();
SqlDataReader dr ;
dr = obj.SelectCatalog(catselectddl.SelectedIndex);
if (dr.Read())
{
catnametxt.Text = dr["catname"].ToString();
catdestxt.Text = dr["catdescription"].ToString();
}
}