ASP.NET学習レコード:KingFrameフレームワークデータベースの使用ドキュメント
13907 ワード
情報システムプロジェクトは、主にフロントエンドがどのようにユーザーのインタラクション(コア)を実現するか、バックエンドがデータベースとの連通処理(すなわち、削除・変更)を実現するかを示している.この主な記録チームは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());
Tips: DBNull.Valueは空のデータとして処理されます
プロジェクトでは一般的に直接データを削除するのではなく、そのデータが有効かどうかをマークすることによってupdateフィールドが0であることによって暗黙的な削除を実現するので、削除操作の本質はupdate更新操作であり、具体的には次節のUpdate更新データ操作を参照する.
データを問い合わせると、データが返されます.これらのデータは、データベースから取り出した後に一定の論理処理が必要になる可能性があります.戻りの先端で、時間を適切にフォーマットしたり、元の2つのフィールドをマージしたりする開始時間が、期限値として1つのフィールドになるなどの二次微細加工を行います.
4.1処理不要でフロントエンドに直接戻る-getPagedDataJsonメソッドによりjsonに直接カプセル化する
4.2いくつかのフィールドを細かく加工し、再度カプセル化して返す必要がある
4.3表のデータを取得して処理し、取得後データTableとして保存し、datatableを処理する
いくつかの操作では、1つの機能を更新すると同時に複数のテーブルのデータを更新する必要がある場合があります.再プログラムでは、この操作を分割(すなわち、sqlを1つ作る前に前後に1つ完成することをお勧めしません)することは一般的に推奨されません.この方法では、このロットの処理が10件ある場合があります.場合によっては、ネットワークが悪い場合、これらの操作はすべて実行されていない可能性があります.しかし、私たちのビジネスニーズは、データテーブルに同期更新のニーズがあるため、一緒に更新する必要があるに違いありません.これにより、私たちのシステムのデータが衝突します.
これらのsql文をまとめる後、配列リストの集合に入れ、1つのsql実行方法で一緒に操作するのが良い.
6いくつかの手探りの書き方、推薦しないで、しかし部分は参考にすることができます
取得した結果を配列リストシーケンスに1つずつ保存し、シーケンス操作を後で行う
フルレコード
他にもいくつかの書き方があります
データベース統計countの文:
添削して調べる.
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