Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C语言中的动态过程_C#_Sql_Database - Fatal编程技术网

C# C语言中的动态过程

C# C语言中的动态过程,c#,sql,database,C#,Sql,Database,这是我的桌子: ID ReportID M_ID ColsName Type Level Parent ID 1989 66 349 t169.ID j J 1 0 1990 66 350 t170.ID j J 1 0 1991 66 351 t171.ID j J 1 0 1992 66 352 Linkw2.t170ID j 2 1990 1

这是我的桌子:

ID        ReportID  M_ID    ColsName       Type     Level   Parent ID
1989    66  349 t169.ID j   J       1   0
1990    66  350 t170.ID j   J       1   0
1991    66  351 t171.ID j   J       1   0
1992    66  352 Linkw2.t170ID   j   2   1990
1993    66  352 Linkw2.t169ID   j   2   1989
1994    66  352 Linkw2.t171ID   j   2   1991
我的代码是:

DatabaseObject objData = new DatabaseObject();
int ReportID = Convert.ToInt32(Request["ReportsID"]);

objData.Query = "select DISTINCT R.ReportName,R.ID from Reports R inner join ReportModuleCols RC on R.ID=RC.ReportID where RC.ReportID= " + ReportID + " and R.ID= " + ReportID;
string ReportName = Convert.ToString(objData.GetSingleValue());
string StoredProcedure = "";
StoredProcedure += " CREATE PROCEDURE spGet" + ReportName + ReportID + "\n";
StoredProcedure += " @Error Varchar(1000) output\n";
StoredProcedure += " AS \n";
StoredProcedure += " BEGIN \n";
StoredProcedure += " BEGIN TRY\n";
StoredProcedure += " SELECT ";

objData.Query = "select ID,ReportID,ReportModuleID,ColsName,Type,ReportLevel,ParentID from ReportModuleCols where Type='d' and ReportID=" + ReportID;
DataTable Displaytb = objData.GetTable();

for (int d = 0; d < Displaytb.Rows.Count; d++)
    StoredProcedure += Displaytb.Rows[d]["ColsName"] + ",";

string DisplayParam = StoredProcedure.Remove(StoredProcedure.Length - 1, 1);
DisplayParam += " FROM \n";
objData.Query = "select ID,ReportID,ReportModuleID,ColsName,Type,ReportLevel,ParentID from ReportModuleCols where Type='i' and ReportID=" + ReportID;
DataTable inputtable = objData.GetTable();

for (int t = 0; t < inputtable.Rows.Count; t++)
{
    string table = "";
    table = inputtable.Rows[t]["ColsName"].ToString();
    table = table.Substring(0, table.IndexOf("."));
    DisplayParam += table + ",";
}

string SPQuery = DisplayParam.Remove(DisplayParam.Length - 1, 1) + "\n";
SPQuery += " WHERE \n";

//Here i want to write join query 
SPQuery += " END TRY\n";
SPQuery += " BEGIN CATCH\n";
SPQuery += " SET @Error = ERROR_NUMBER() + ' ' + ERROR_MESSAGE();\n";
SPQuery += " END CATCH\n";
SPQuery += " END";
objData.Query = SPQuery;
objData.Execute();
我有一张桌子,我有3种类型,I,d和j

输入参数的i

三维显示参数


j表示连接参数,我正在为它创建动态过程,我不知道如何编写连接查询。请帮帮我。

我是这样做的。它正在工作

DatabaseObject objData = new DatabaseObject();
int ReportID = Convert.ToInt32(Request["ReportsID"]);

objData.Query = " select DISTINCT R.ReportName,R.ID from Reports R inner      
join ReportModuleCols RC on R.ID=RC.ReportID where RC.ReportID= " + ReportID   
        + " and R.ID= " + ReportID;

string ReportName = Convert.ToString(objData.GetSingleValue());

string storedProcedure = "";
storedProcedure += " CREATE PROCEDURE spGet" + ReportName + ReportID + "\n";
storedProcedure += " @Error Varchar(1000) output\n";
storedProcedure += " AS \n";
storedProcedure += " BEGIN \n";
storedProcedure += " BEGIN TRY\n";
storedProcedure += " SELECT ";

objData.Query = " select ID,ReportID,ReportModuleID,ColsName,Type,ReportLevel,ParentID from ReportModuleCols where Type='d' and ReportID=" + ReportID;
DataTable Displaytb = objData.GetTable();

for (int d = 0; d < Displaytb.Rows.Count; d++)
{
    storedProcedure += Displaytb.Rows[d]["ColsName"] + ",";
}

string DisplayParam = storedProcedure.Remove(storedProcedure.Length - 1, 1);

DisplayParam += " FROM \n";

objData.Query = "select ColsName from ReportModuleCols where Type='d' and ReportID=" + ReportID;

DataTable inputtable = objData.GetTable();
string TableColumn = "";

for (int t = 0; t < inputtable.Rows.Count; t++)
{
            string table = "";
            table = inputtable.Rows[t]["ColsName"].ToString();
            table = table.Substring(0, table.IndexOf("."));
            TableColumn += table + ",";
}

string[] TCols = TableColumn.Split(",".ToCharArray());
string[] unique = TCols.Distinct().ToArray();

foreach (string TableName in unique)
{
            if (TableName != "")
            {
                DisplayParam += TableName + ",";
            }
}

string SPQuery = DisplayParam.Remove(DisplayParam.Length - 1, 1) + "\n";

SPQuery += " WHERE \n";

objData.Query = " select ID,ReportID,ReportModuleID,ColsName,Type,ReportLevel,ParentID from ReportModuleCols where Type='j' and ParentID=0 and ReportID=" + ReportID;
DataTable Join = objData.GetTable();

for (int t = 0; t < Join.Rows.Count; t++)
{
            objData.Query = " select ColsName from ReportModuleCols where Type='j' and ParentID=" + Convert.ToInt32(Join.Rows[t]["ID"]) + " and ReportID=" + ReportID;

            string ColJoin = objData.GetSingleValue() + "";
            SPQuery += Join.Rows[t]["ColsName"] + "=" + ColJoin + " AND  \n";
}

SPQuery += " 1 = 1 \n";
SPQuery += " END TRY\n";
SPQuery += " BEGIN CATCH\n";
SPQuery += " SET @Error = ERROR_NUMBER() + ' ' + ERROR_MESSAGE();\n";
SPQuery += " END CATCH\n";
SPQuery += " END";

objData.Query = SPQuery;
objData.Execute();

您的问题有严重的格式问题。请更新,以便我们能够正确阅读并帮助您。