[セットトップ]動的一括新規SQLデータベースのテーブル
6541 ワード
引用する
プロジェクトでは、データベース内で動的に新しいテーブルを作成する必要があるため、コードでテーブルを構築する機能を完了する必要があります.
自分にとっては新鮮で、もともと自分が接触していたものはすべて既存のデータベースの上で操作されていて、動的にテーブルを建てたことがありません.
機能なので、このブロックのコードに興味があります.次はこのブロックの知識を共有します.
コールコード
複数のテーブルを作成するテーブル構造とそのデータ型
回答レコードテーブルのフィールドとそのデータ型を作成します.
テーブル作成方法
データベースが存在するかどうかを判断する方法と、前のブログを参照してください.
データベーステーブルを作成するためのSql文の結合
小結
大きなプロジェクトに触れた後、自分が知っていることが本当に少なすぎて、多くのものに触れたことがなくて、自分が実現できないと思っているものがあります.
他の人はすでに非常に成熟して実現したので、私たちが難題に直面したとき、多くの資料を見て、多くの人と交流して、多くの人のコードを見る必要があります.これ
私にいくつかのインスピレーションを与えるかもしれませんが、私たちは迷いの中で方向を見つけて、だから私たちはプロジェクトの中で勉強を続ける必要があります!!
プロジェクトでは、データベース内で動的に新しいテーブルを作成する必要があるため、コードでテーブルを構築する機能を完了する必要があります.
自分にとっては新鮮で、もともと自分が接触していたものはすべて既存のデータベースの上で操作されていて、動的にテーブルを建てたことがありません.
機能なので、このブロックのコードに興味があります.次はこのブロックの知識を共有します.
コールコード
<span style="font-size:18px;"> List<string> listNewTableName = new List<string>();
for (int i = 0; i < listCourseQuestionType.Count(); i++)
{
listNewTableName.Add(listCourseQuestionType[i].AnswerRecordMappingTableName.ToString());
}
//
List<Dictionary<string, string>> listFields = AnswerRecordFields(listCourseQuestionType.Count());
dynamicCreationBLL.CreateDataTable("ITOOExam", listNewTableName, listFields, "ITOOExamEntities"); //QuestionEntities</span>
複数のテーブルを作成するテーブル構造とそのデータ型
<span style="font-size:18px;"> /// <summary>
///
/// </summary>
/// <param name="DictionaryCount"></param>
/// <returns></returns>
public List<Dictionary<string, string>> AnswerRecordFields(int DictionaryCount)
{
List<Dictionary<string, string>> listDictionary = new List<Dictionary<string, string>>();
for (int i = 0; i < DictionaryCount; i++)
{
listDictionary.Add(AnswerRecordField());
}
return listDictionary;
}</span>
回答レコードテーブルのフィールドとそのデータ型を作成します.
<span style="font-size:18px;"> /// <summary>
///
/// </summary>
/// <returns></returns>
public Dictionary<string, string> AnswerRecordField()
{
Dictionary<string, string> field = new Dictionary<string, string>();
field.Add("answerRecordId", "varchar(40)");
field.Add("examineeId", "varchar(40)");
field.Add("rightAnswer", "varchar(max)");
field.Add("examineeAnswer", "varchar(max)");
field.Add("finalScore", "decimal(5,2)");
field.Add("examineeIsJudgment", "int");
field.Add("questionId", "varchar(40)");
field.Add("questionNoOrder", "varchar(10)");
field.Add("optionNoOrder", "varchar(10)");
field.Add("userId", "varchar(40)");
field.Add("timeStamp", "DateTime default getdate() ");
field.Add("reUserId", "varchar(40)");
field.Add("isReJudge", "int");
field.Add("reJudgeScore", "decimal(5,2)");
field.Add("preScore", "decimal(5,2)");
field.Add("IsDeleteAnswerRecord", "int");
field.Add("ExamId", "varchar(40)");
field.Add("CollegeId", "varchar(40)"); // ID
field.Add("OnClassId", "varchar(40)");// ID
field.Add("OnClassName", "varchar(40)");// name
field.Add("CollegeName", "varchar(40)");// name
return field;
}</span>
テーブル作成方法
<span style="font-size:18px;"> /// <summary>
/// ,
/// </summary>
/// <param name="db"> </param>
/// <param name="listDt"> </param>
/// <param name="dic"> Dictionary </param>
/// <param name="connKey"> Key</param>
public void CreateDataTable(string db, List<string> listDt, List<Dictionary<string, string>> dic, string connKey)
{
SQLHelper helper = new SQLHelper(connKey);
string connToMaster = ConfigurationManager.ConnectionStrings[connKey].ToString();
//
if (IsDBExist(db, connKey) == false)
{
throw new Exception(" !");
}
for (int i = 0; i < listDt.Count(); i++)
{
// ,
if (IsTableExist(db, listDt[i], connKey) == true)
{
// ,
continue;
}
else// ,
{
// ,
string createTableStr = PinjieSql(db, listDt[i], dic[i]);
helper.ExecuteNonQuery(createTableStr, CommandType.Text);
}
}
}</span>
データベースが存在するかどうかを判断する方法と、前のブログを参照してください.
データベーステーブルを作成するためのSql文の結合
<span style="font-size:18px;"> /// <summary>
/// Sql
/// </summary>
/// <param name="db"> </param>
/// <param name="dt"> </param>
/// <param name="dic"> </param>
/// <returns> </returns>
public string PinjieSql(string db, string dt, Dictionary<string, string> dic)
{
// ,( )
string content = "serial int identity(1,1) primary key ";
// dic ,
List<string> test = new List<string>(dic.Keys);
for (int i = 0; i < dic.Count(); i++)
{
content = content + " , " + test[i] + " " + dic[test[i]];
}
// ,
string createTableStr = "use " + db + " create table " + dt + " (" + content + ")";
return createTableStr;
}</span>
小結
大きなプロジェクトに触れた後、自分が知っていることが本当に少なすぎて、多くのものに触れたことがなくて、自分が実現できないと思っているものがあります.
他の人はすでに非常に成熟して実現したので、私たちが難題に直面したとき、多くの資料を見て、多くの人と交流して、多くの人のコードを見る必要があります.これ
私にいくつかのインスピレーションを与えるかもしれませんが、私たちは迷いの中で方向を見つけて、だから私たちはプロジェクトの中で勉強を続ける必要があります!!