簡體   English   中英

使用 ADO.NET 在代碼隱藏 C# 中使用 select 語句獲取所有行數據

[英]Get all the row data with select statement in codebehind C# using ADO.NET

也許有人可以幫助我解決以下問題。 我想要實現的是獲取表的所有行並將它們放入一個字符串中,每個值之間帶有逗號。 結果應該是一個腳本文件,用於獲取表中的所有行數據。

到目前為止:

static void Main(string[] args) {
    StringBuilder builder = new StringBuilder();
    string ConString = @"Data Source=.;Initial Catalog=USR;Integrated Security=True";
    foreach (string itemtablename in TableNames())
    {
        Schema schema = new Schema();
        schema.TableName = itemtablename; //the name of the table

        //int i = 0;
        string queryvalues = "select * from " + itemtablename;
        SqlConnection conValues = new SqlConnection(ConString);
        using (conValues)
        {
            conValues.Open();
            SqlCommand cmdSchemaValues = new SqlCommand(queryvalues, conValues);
            SqlDataReader readerSchemaValues = cmdSchemaValues.ExecuteReader();
            DataTable dataTable = readerSchemaValues.GetSchemaTable();

            //builder.AppendLine("INSERT INTO " + itemtablename);
            //builder.AppendLine(" VALUES (");

            for (int i = 0; i < dataTable.Rows.Count; i++)
            {
                string rowValues= dataTable.Rows[i].ToString() + ",";
               
                builder.Append(rowValues);
            }
        }
    }
    System.IO.File.WriteAllText(@"C:\script.txt", builder.ToString());
}

如果目標是“為表中存在的數據生成插入腳本”,那么您可以嘗試使用 SQL Server Management Studio 來執行此操作。 它也已在其他Stack Overflow 問題中討論過。

試試這個邏輯:

foreach(DataRow row in datatable.Rows)
{
    builder.AppendLine("INSERT INTO " + itemtablename + "(" + string.Join(", ", datatable.Columns.Cast<DataColumn>().Select(x => x.ColumnName).ToArray()).Trim().TrimEnd(","));
    builder.AppendLine("VALUES ('" + string.Join("', '", row.ItemArray).Trim().TrimEnd('\'').Trim().TrimEnd(',') + "')")
}

string script = builder.ToString();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM