在 C# 的代码隐藏中创建具有值的表脚本

Posted

技术标签:

【中文标题】在 C# 的代码隐藏中创建具有值的表脚本【英文标题】:Creating table script with values in codebehind inC# 【发布时间】:2020-12-28 01:23:53 【问题描述】:

我想用 ado.net 构建一个控制台应用程序,从数据库中获取一个表并将其转换为文件中的字符串输出。我想用 stringbuilder 来做这件事。但在我获取数据并将其写入字符串生成器之前,我想用“xxx”填充表格“姓名”和“姓氏”的 2 个字段。最终结果必须是在 tsql 中包含 create 和 insert values 语句的文件。

class Program
    
        static void Main(string[] args)
        
            string ConString = @"Data Source=.;Initial Catalog=TEST;Integrated Security=True";

           

            SqlConnection con = new SqlConnection(ConString);
            string querystring = "Select * from person";

           

            con.Open();
            SqlCommand cmd = new SqlCommand(querystring, con);
            SqlDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            
                Console.WriteLine(reader[0].ToString() + " " + reader[1].ToString() + " " + reader[2].ToString() + reader[3].ToString());
            

            StringBuilder builder = new StringBuilder();
            builder.Append("");
            //CREATE TABLE Person
            //[name] [varchar](20) NOT NULL,
            //[surname] [varchar](20) NOT NULL,        
            //[Gender] [varchar](5) NOT NULL


            //INSERT VALUES (...,...) with modifyed name and surname data and put it in the stringbuilder


            string innerString = builder.ToString();

            using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"\script.txt"))
            
                file.WriteLine(innerString.ToString());
            

         
               
            Console.Read();
        

       
    

有没有聪明的方法来实现这一点? 谢谢

【问题讨论】:

【参考方案1】:

我相信你所追求的是这样的:

static void Main(string[] args)
    
        string ConString = @"Data Source=.;Initial Catalog=Clients;Integrated Security=True";

        SqlConnection con = new SqlConnection(ConString);
        string querystring = "Select * from person";

        con.Open();
        SqlCommand cmd = new SqlCommand(querystring, con);
        SqlDataReader reader = cmd.ExecuteReader();
        StringBuilder builder = new StringBuilder();

        builder.AppendLine("CREATE TABLE PERSON");
        builder.AppendLine("(");
        builder.AppendLine("[name] [varchar](20) NOT NULL,");
        builder.AppendLine("[surname] [varchar](20) NOT NULL,");
        builder.AppendLine("[gender] [varchar](5) NOT NULL");
        builder.AppendLine(")");

        while (reader.Read())
        
            var name = reader[0].ToString();
            var surname = reader[1].ToString();
            var gender = reader[2].ToString();
            var value4 = reader[3].ToString();

            Console.WriteLine(name + " " + surname + " " + gender + value4);

            builder.AppendLine("INSERT INTO PERSON (name, surname, gender) VALUES ('" + name + "','" + surname + "','" + gender + "')");
        

        System.IO.File.WriteAllText(@"\script.txt", builder.ToString());

        Console.Read();
    

【讨论】:

谢谢。我需要从 sql 中获取表名,以便它变得通用。此解决方案提供硬编码字符串。并且gender列必须填写sql中表中的数据。

以上是关于在 C# 的代码隐藏中创建具有值的表脚本的主要内容,如果未能解决你的问题,请参考以下文章

在执行立即语句中创建具有默认值的表

如何将在我的 Javascript 中创建的字符串数组传递给 C# 代码隐藏文件?

如何在 SQL Server 2008 中创建具有新名称的重复表

在 c# 中从图像中创建具有特定像素格式的位图而不加载图像

在c#中创建一个javascript函数

如何在EF6 Code First中创建与枚举对应的表?