ASP.NET学習レコード:KingFrameフレームワークデータベースの使用ドキュメント


情報システムプロジェクトは、主にフロントエンドがどのようにユーザーのインタラクション(コア)を実現するか、バックエンドがデータベースとの連通処理(すなわち、削除・変更)を実現するかを示している.この主な記録チームは10年間のプログラミング技術を練り上げた後、沈殿したASPに基づく.NETのKingFrameフレームワークのバックエンドとデータベースの接続処理などの処理に関する学習:
添削して調べる.
King.DataBase.SqlServer.GetNonQueryEffectedRow(cmd)//sqlstrによる増加、削除、変更King.DataBase.SqlServer.ExecuteWithTransactionCmd(al)/物事は複数のsqlを実行し、失敗するとすべてロールバックする
King.DataBase.SqlServer.getPagedDataJson(cmd)/ページング属性を持つjsonオブジェクトを取得します.すなわち、sqlクエリの結果をページング付きjson結果に直接カプセル化します.
King.DataBase.SqlServer.GetDataSet(cmd)/sqlstrによるDataSetの取得
DataTable dt5 = King.DataBase.SqlServer.GetDataSet(cmd5).Tables[0];sqlstrによってDataSetを取得してからTable[0]を取得して、後で具体的な操作を提供することができます
King.DataBase.SqlServer.getJsonOfDataTable(dt)/DataTableをJson Kingに変換する.StringOper.getJsonStr(ksd).ToString()/蓄積シーケンスデータをjsonデータに変換
//sql文で渡す値の構築
SqlCommand cmd = new SqlCommand(sqlstr); cmd.Parameters.AddWithValue("@TableKey", Guid.NewGuid().ToString());
 

1データ挿入-insert

string sqlstr = "insert into       (TableKey,  ,    ,      id,  ,    ,  ,     ,    ,   ,       ,     ,        ,    ,      ,    ,  ,    ,      ,          ) ";
sqlstr += " values(@TableKey,@  ,@    ,@      id,@  ,@    ,@  ,@     ,@    ,@   ,@       ,@     ,@        ,@    ,@      ,@    ,@  ,@    ,@      ,@          )";
SqlCommand cmd = new SqlCommand(sqlstr);
cmd.Parameters.AddWithValue("@TableKey", Guid.NewGuid().ToString());
cmd.Parameters.AddWithValue("@  ", context.Request["ph"]);
...
if (context.Request["ccsj"] == null || context.Request["ccsj"] == "")
{
cmd.Parameters.AddWithValue("@    ", DBNull.Value);
}
else
{
cmd.Parameters.AddWithValue("@    ", context.Request["ccsj"]);
}
cmd.Parameters.AddWithValue("@  ", context.Request["sczp"]);
//cmd.Parameters.AddWithValue("@  ", DBNull.Value);
...
try
{
King.DataBase.SqlServer.GetNonQueryEffectedRow(cmd);
context.Response.Write("1");
}
catch (Exception ex)
{
context.Response.Write(ex.Message.ToString());
}

Tips:  DBNull.Valueは空のデータとして処理されます

2データの削除


プロジェクトでは一般的に直接データを削除するのではなく、そのデータが有効かどうかをマークすることによってupdateフィールドが0であることによって暗黙的な削除を実現するので、削除操作の本質はupdate更新操作であり、具体的には次節のUpdate更新データ操作を参照する.

3更新データ-Update

string sqlstr = "update          set         =@        ,          =@          ,         id=@         id,      =@       where TableKey=@TableKey";
SqlCommand cmd = new SqlCommand(sqlstr);
cmd.Parameters.AddWithValue("@        ", context.Request["jcgksj"]);
cmd.Parameters.AddWithValue("@          ", System.DateTime.Now);
cmd.Parameters.AddWithValue("@         id", King.GlobalOper.getGlobalPara("userId"));
cmd.Parameters.AddWithValue("@      ", 0);
cmd.Parameters.AddWithValue("@TableKey", context.Request["sendkey"]);
try
{
	King.DataBase.SqlServer.GetNonQueryEffectedRow(cmd);
	context.Response.Write("1");
}
catch (Exception ex)
{
	context.Response.Write(ex.Message.ToString());
}

4クエリーデータ-select


データを問い合わせると、データが返されます.これらのデータは、データベースから取り出した後に一定の論理処理が必要になる可能性があります.戻りの先端で、時間を適切にフォーマットしたり、元の2つのフィールドをマージしたりする開始時間が、期限値として1つのフィールドになるなどの二次微細加工を行います.
4.1処理不要でフロントエンドに直接戻る-getPagedDataJsonメソッドによりjsonに直接カプセル化する
#region        
string conditionStr = "and    =1 and    id='" + context.Request["sendkey"] + "'";
if (context.Request["qymc"] != "")
{
	conditionStr += " and      like '%" + context.Request["qymc"] + "%'";
}
#endregion
var sqlstr = "exec KingPage @tableName, @tableCount, @pageSize, @currentPage, @sortColumn, @strCondition, @pageCount output, @counts output";
var cmd = new SqlCommand(sqlstr);
cmd.Parameters.AddWithValue("@tableName", "view_    ");
cmd.Parameters.AddWithValue("@tableCount", "TableKey,    ,    ,    ,     ,      ,     ,     ,    ");
cmd.Parameters.AddWithValue("@pageSize", int.Parse(context.Request["pageSize"]));
cmd.Parameters.AddWithValue("@currentPage", int.Parse(context.Request["pageid"]));
cmd.Parameters.AddWithValue("@sortColumn", "      asc");
cmd.Parameters.AddWithValue("@strCondition", conditionStr);
cmd.Parameters.Add("@pageCount", SqlDbType.BigInt).Direction = ParameterDirection.Output;
cmd.Parameters.Add("@counts", SqlDbType.BigInt).Direction = ParameterDirection.Output;
context.Response.Write(King.DataBase.SqlServer.getPagedDataJson(cmd));

4.2いくつかのフィールドを細かく加工し、再度カプセル化して返す必要がある
#region        
string conditionStr = "and    =1 and    id='" + context.Request["sendkey"] + "'";
if (context.Request["qymc"] != "")
{
	conditionStr += " and      like '%" + context.Request["qymc"] + "%'";
}
#endregion
var sqlstr = "exec KingPage @tableName, @tableCount, @pageSize, @currentPage, @sortColumn, @strCondition, @pageCount output, @counts output";
var cmd = new SqlCommand(sqlstr);
cmd.Parameters.AddWithValue("@tableName", "view_    ");
cmd.Parameters.AddWithValue("@tableCount", "TableKey,    ,    ,    ,     ,      ,     ,     ,    ");
cmd.Parameters.AddWithValue("@pageSize", int.Parse(context.Request["pageSize"]));
cmd.Parameters.AddWithValue("@currentPage", int.Parse(context.Request["pageid"]));
cmd.Parameters.AddWithValue("@sortColumn", "      asc");
cmd.Parameters.AddWithValue("@strCondition", conditionStr);
cmd.Parameters.Add("@pageCount", SqlDbType.BigInt).Direction = ParameterDirection.Output;
cmd.Parameters.Add("@counts", SqlDbType.BigInt).Direction = ParameterDirection.Output;
//context.Response.Write(King.DataBase.SqlServer.getPagedDataJson(cmd));
//            sql       ,    DataTable ,    
DataTable dt = King.DataBase.SqlServer.GetDataSet(cmd).Tables[0];
dt.Columns.Add("    ");
foreach (DataRow dr in dt.Rows)
{
	if (dr["     "].ToString() != "" && dr["     "].ToString() != "")
	{
		dr["    "] = DateTime.Parse(dr["     "].ToString()).ToString("yyyy-MM-dd") + " — " + DateTime.Parse(dr["     "].ToString()).ToString("yyyy-MM-dd");
	}
	else
	{
		dr["    "] = "";
	}
}
//      ,  DataTable     Json  -getJsonOfDataTable
string jsonStr = King.DataBase.SqlServer.getJsonOfDataTable(dt);
//           
King.DataBase.KSDataList ksd = new King.DataBase.KSDataList();
//        ,               json      
ksd.pageCount = cmd.Parameters["@pageCount"].Value.ToString();
ksd.counts = cmd.Parameters["@counts"].Value.ToString();
ksd.CurrentPageJson = jsonStr;
//          KSDataList   ,       json  
context.Response.Write(King.StringOper.getJsonStr(ksd).ToString());

4.3表のデータを取得して処理し、取得後データTableとして保存し、datatableを処理する
//                
string sqlstr5 = "select     ,    ,   ,    ,   id from CreditPlatform_Frame.dbo.  _   where TableKey=@id";
SqlCommand cmd5 = new SqlCommand(sqlstr5);
cmd5.Parameters.AddWithValue("@id", Request["sendkey"]);
DataTable dt5 = King.DataBase.SqlServer.GetDataSet(cmd5).Tables[0];
DataRow dr = dt5.Rows[0];
string qymc = dr["    "].ToString();
//       ,              datatable  foreach    
foreach (DataRow dr in dt.Rows)
{
	if (dr["     "].ToString() != "" && dr["     "].ToString() != "")
	{
		dr["    "] = DateTime.Parse(dr["     "].ToString()).ToString("yyyy-MM-dd") + " — " + DateTime.Parse(dr["     "].ToString()).ToString("yyyy-MM-dd");
	}
	else
	{
		dr["    "] = "";
	}
}

5複数のsql文の同時操作


いくつかの操作では、1つの機能を更新すると同時に複数のテーブルのデータを更新する必要がある場合があります.再プログラムでは、この操作を分割(すなわち、sqlを1つ作る前に前後に1つ完成することをお勧めしません)することは一般的に推奨されません.この方法では、このロットの処理が10件ある場合があります.場合によっては、ネットワークが悪い場合、これらの操作はすべて実行されていない可能性があります.しかし、私たちのビジネスニーズは、データテーブルに同期更新のニーズがあるため、一緒に更新する必要があるに違いありません.これにより、私たちのシステムのデータが衝突します.
これらのsql文をまとめる後、配列リストの集合に入れ、1つのsql実行方法で一緒に操作するのが良い.
try
{
	// ArrayList            sql
    var al = new System.Collections.ArrayList();
    //              id,      id       ,
	var keyArr = context.Request["id"].Split(',');
	var sqlstr = "";
	var cmd = new SqlCommand();
	foreach (var s in keyArr)
	{
        //            ,     ArrayList,    add       ,     ArrayList    keyArr.Count*3 sql,         ,         foreach     
		sqlstr = "update CreditPlatform_Frame.dbo.  _   set    =0 where TableKey=(select   id from      where TableKey=@key and    =1)";
		cmd = new SqlCommand(sqlstr);
		cmd.Parameters.AddWithValue("@key", s);
		al.Add(cmd);

		sqlstr = "update      set    =0 where TableKey=@key;";
		cmd = new SqlCommand(sqlstr);
		cmd.Parameters.AddWithValue("@key", s);
		al.Add(cmd);

		//                        
		sqlstr = "update          set         =@        ,          =@          ,         id=@         id,      =@       where       =1 and   id=@TableKey";
		cmd = new SqlCommand(sqlstr);
		cmd.Parameters.AddWithValue("@        ", System.DateTime.Now);
		cmd.Parameters.AddWithValue("@          ", System.DateTime.Now);
		cmd.Parameters.AddWithValue("@         id", King.GlobalOper.getGlobalPara("userId"));
		cmd.Parameters.AddWithValue("@      ", 0);
		cmd.Parameters.AddWithValue("@TableKey", s);
		al.Add(cmd);

		sqlstr = "update          set     =@    ,      =@      ,     id=@     id,    =@     where     =1 and   id=@TableKey";
		cmd = new SqlCommand(sqlstr);
		cmd.Parameters.AddWithValue("@    ", System.DateTime.Now);
		cmd.Parameters.AddWithValue("@      ", System.DateTime.Now);
		cmd.Parameters.AddWithValue("@     id", King.GlobalOper.getGlobalPara("userId"));
		cmd.Parameters.AddWithValue("@    ", 0);
		cmd.Parameters.AddWithValue("@TableKey", s);
		al.Add(cmd);
	}
	//       ,    ArrayList     sql,         ExecuteWithTransactionCmd  ,        sql   
	King.DataBase.SqlServer.ExecuteWithTransactionCmd(al);
	context.Response.Write(1);
}
catch (Exception ex)
{
	context.Response.Write(ex.Message.ToString());
}

6いくつかの手探りの書き方、推薦しないで、しかし部分は参考にすることができます
取得した結果を配列リストシーケンスに1つずつ保存し、シーケンス操作を後で行う
List listS = new List();
foreach (var s in keyArr)
{
	var sqlstr = "select   id from      where TableKey=@key and    =1";
	var cmd = new SqlCommand();
	cmd = new SqlCommand(sqlstr);
	cmd.Parameters.AddWithValue("@key", s);
	DataTable dt = King.DataBase.SqlServer.GetDataSet(cmd).Tables[0];
	//string bmid = dt.Rows[0][0].ToString();
	listS.Add(dt.Rows[0][0].ToString());
}

フルレコード
var keyArr = context.Request["id"].Split(',');
List listS = new List();
foreach (var s in keyArr)
{
	var sqlstr = "select   id from      where TableKey=@key and    =1";
	var cmd = new SqlCommand();
	cmd = new SqlCommand(sqlstr);
	cmd.Parameters.AddWithValue("@key", s);
	DataTable dt = King.DataBase.SqlServer.GetDataSet(cmd).Tables[0];
	//string bmid = dt.Rows[0][0].ToString();
	listS.Add(dt.Rows[0][0].ToString());
}
var sqlstr1 = "";
var cmd1 = new SqlCommand();
var al = new System.Collections.ArrayList();
foreach (var s in keyArr)
{
	sqlstr1 = "update      set    =0 where TableKey=@key;";
	cmd1 = new SqlCommand(sqlstr1);
	cmd1.Parameters.AddWithValue("@key", s);
	al.Add(cmd1);
}
foreach (var k in listS)
{
	sqlstr1 = "update CreditPlatform_Frame.dbo.  _   set    =0 where TableKey=@key;";
	cmd1 = new SqlCommand(sqlstr1);
	cmd1.Parameters.AddWithValue("@key", k);
	al.Add(cmd1);
}
King.DataBase.SqlServer.ExecuteWithTransactionCmd(al);
context.Response.Write(1);

他にもいくつかの書き方があります
//       id    -by        ,           ,      
string sqlstr1 = "select * from CreditPlatform_Frame.dbo.  _   where    id=@id";
SqlCommand cmd1 = new SqlCommand(sqlstr1);
cmd1.Parameters.AddWithValue("@id", Request["sendkey"]);
DataTable dt = King.DataBase.SqlServer.GetDataSet(cmd1).Tables[0];
if (dt.Rows.Count != 0)
{
	operae = "1";//  
	string sqlstr2 = "select     ,    ,   ,  ,    ,     ,   id from CreditPlatform_Frame.dbo.  _   where TableKey=@id";
	SqlCommand cmd2 = new SqlCommand(sqlstr2);
	cmd2.Parameters.AddWithValue("@id", Request["sendkey"]);
	DataTable dt1 = King.DataBase.SqlServer.GetDataSet(cmd2).Tables[0];
	//this.bmmc.Value = dt1.Rows[0]["    "].ToString();
	//this.bmdh.Value = dt1.Rows[0]["    "].ToString();
	//this.fzr.Value = dt1.Rows[0]["   "].ToString();
	//this.px.Value = dt1.Rows[0]["  "].ToString();
	//this.bz.Value = dt1.Rows[0]["    "].ToString();
	//this.wzgjz.Value = dt.Rows[0]["     "].ToString();
}
else {
	
	//        tablekey           
	string sqlstr3 = "select * from      where TableKey=@id";
	SqlCommand cmd3 = new SqlCommand(sqlstr3);
	cmd3.Parameters.AddWithValue("@id", Request["sendkey"]);
	DataTable dt3 = King.DataBase.SqlServer.GetDataSet(cmd3).Tables[0];
	if (dt3.Rows.Count != 0)
	{
		operae = "2";//  update
	}
	else {

データベース統計countの文:
select a.py,b.gk from  ( select count(1) as py from          where     =1 and   id= 1) a  FULL JOIN (select count(1) as gk from          where     =1 and   id= 1) b on 1=1