Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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# 在SQL Server记录中循环_C#_Sql Server - Fatal编程技术网

C# 在SQL Server记录中循环

C# 在SQL Server记录中循环,c#,sql-server,C#,Sql Server,我来自数据背景,对C#完全陌生。但是我想学习一些东西,并尝试使用sql Server数据库的内容生成一些.sql文件。我已经试了一整天了,我想我已经接近我需要的了。我现在有下面列出的代码 当我启用时: System.Data.DataTable schema = conn.GetSchema("TABLES"); 一切正常,它给了我一个完整的模式列表。但是我不想循环模式,我想循环该行下面列出的查询提供的记录 有人能给这个C#n00b一个解决方案或提示吗?我想要的是一种不循

我来自数据背景,对C#完全陌生。但是我想学习一些东西,并尝试使用sql Server数据库的内容生成一些
.sql
文件。我已经试了一整天了,我想我已经接近我需要的了。我现在有下面列出的代码

当我启用时:

System.Data.DataTable schema = conn.GetSchema("TABLES"); 
一切正常,它给了我一个完整的模式列表。但是我不想循环模式,我想循环该行下面列出的查询提供的记录

有人能给这个C#n00b一个解决方案或提示吗?我想要的是一种不循环模式的方法,而是通过查询的输出。我尝试了command.rows、ad.rows和ds.rows。但那不好。有没有一种方法可以将查询输出放入一个var中,这样我就可以循环使用它

<#@ template language="C#" debug="True" hostspecific="True" #>
<#@ output extension=".sql" #>
<#@ assembly name="System.Data" #>

<#@ assembly name="System.xml" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.Data.SqlClient" #>
<#@ import namespace="System.Data" #>
    
        <#
            string connectionString = "myconnectionstring"; 
            SqlConnection conn = new SqlConnection(connectionString); 
            conn.Open(); 
            //System.Data.DataTable schema = conn.GetSchema("TABLES"); 
            string selectQuery = "select * from [config].[SourcesAndObjects]"; 
            SqlCommand command = new SqlCommand(selectQuery,conn); 
            SqlDataAdapter ad = new SqlDataAdapter(command); 
            System.Data.DataSet ds = new DataSet(); 
            
            foreach(System.Data.DataRow row in schema.Rows) 
            {                
            #>             
            CREATE TABLE <#= row["TABLE_NAME"].ToString().Trim('s') #>                            
            {
                <#                 
                    command.CommandText = selectQuery.ToString(); 
                    ad.FillSchema(ds, SchemaType.Mapped, row["TABLE_NAME"].ToString());

                    foreach (DataColumn dc in ds.Tables[0].Columns)
                    {
                        #>
                    
                    [<#= dc.ColumnName #>] AS <#= dc.DataType.Name #>
                    {
                        [<#= dc.ColumnName.Replace(dc.ColumnName[0].ToString(), dc.ColumnName[0].ToString()) #>],
                    }                    
                <#    }                 #>
            }                
            <#    
            }  #>    
}

创建表
{
[]作为
{
[],
}                    
}                
}

您到底被困在哪里?请求提示的范围太广了,我被foreach循环循环通过模式变量的问题所困扰,这个模式变量被填充为:conn.GetSchema(“TABLES”);我想循环一个变量,该变量保存查询的输出。。。但我有一个select查询,我想它是执行的,但我尝试循环通过command.Rows或ad.Rows或ds.Rows,但这给了我错误,表明这是不可能的。所以我希望听到如何用查询结果创建一个var,这样我就可以循环使用它。请回答这个问题,这样观众就不必筛选评论来找到所有相关信息。当你在做的时候,展开描述。你明白你的意思,但我们没有一个人在你的脑海里(我想)。通读一下课堂文档。也许您想调用
ad.Fill(ds)
来检索结果集,而不是
ad.FillSchema(ds)
来检索模式?谢谢@AlwaysLearning。这才是我真正需要的。我现在让它工作了!