簡體   English   中英

如何從行計數中獲取行值

[英]How do I get row values from row counts

我正在制作一個簡單的程序來將訪問數據庫更改為 sql 查詢以導入到 sql 數據庫中,獲取列的名稱沒有問題,但是當我嘗試獲取行的值時,它只會變得非常混亂。 這是我的完整代碼,以防萬一我在某處做錯了:

string table = "";
List<object> cols = new List<object>();
List<string> stringArr = new List<string>();
private void button1_Click(object sender, RoutedEventArgs e)
{
    src = srcTxt.Text;
    table = tableCB.Text;
    string output = outTxt.Text;
    string scriptString = "";
    string connString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + src;
    using (OleDbConnection connection = new OleDbConnection(connString))
    {
        connection.Open();
        OleDbDataReader reader = null;
        OleDbCommand command = new OleDbCommand("SELECT * FROM " + table, connection);
        reader = command.ExecuteReader();



        var tabName = reader.GetSchemaTable();
        var nameCol = tabName.Columns["ColumnName"];
        foreach (DataRow row in tabName.Rows)
        {
            cols.Add("`" + row[nameCol] + "`");
        }
        var result = string.Join(",", cols);



        scriptString = "INSERT INTO `" + table + "` (" + result + ") VALUES \n";


        int n = 0;
        while (++n < tabName.Rows.Count)
        {
            stringArr.Add("reader.GetString(" + n + ")");
        }

        var strValue = string.Join(",", stringArr);
        while (reader.Read())
        {

            scriptString += "(" + strValue + "),\n";
        }
    }
    File.WriteAllText(output, scriptString += ";");
}

但這里的代碼僅適用於行部分:

int n = 0;
while (++n < tabName.Rows.Count)
{
    stringArr.Add("reader.GetString(" + n + ")");
}

var strValue = string.Join(",", stringArr);
while (reader.Read())
{

    scriptString += "(" + strValue + "),\n";
}

非常感謝一些建議:)

我想你想要這個結果,我不確定。我希望這段代碼對你有幫助

string table = "";
List<object> cols = new List<object>();
List<string> stringArr = new List<string>();
private void button1_Click(object sender, RoutedEventArgs e)
{
    src = srcTxt.Text;
    table = tableCB.Text;
    string output = outTxt.Text;
    string scriptString = "";
    string connString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + src;
    using (OleDbConnection connection = new OleDbConnection(connString))
    {
        connection.Open();
        OleDbDataReader reader = null;
        OleDbCommand command = new OleDbCommand("SELECT * FROM " + table, connection);
        reader = command.ExecuteReader();



        var tabName = reader.GetSchemaTable();
        var nameCol = tabName.Columns["ColumnName"];
        foreach (DataRow row in tabName.Rows)
        {
            cols.Add("`" + row[nameCol] + "`");
        }
        var result = string.Join(",", cols);



        // scriptString = "INSERT INTO `" + table + "` (" + result + ") VALUES \n";


        // int n = 0;
        // while (++n < tabName.Rows.Count)
        // {
            // stringArr.Add("reader.GetString(" + n + ")");
        // }

        // var strValue = string.Join(",", stringArr);
        // while (reader.Read())
        // {

            // scriptString += "(" + strValue + "),\n";
        // }
        while(reader.Read())
        {
            scriptString += "INSERT  INTO `" + table + "` (" + result + ") VALUES \n (";
            int n = 0;
            while (++n < tabName.Columns.Count)
            {
                stringArr.Add(reader.GetValue(n).ToString());
            }
            var strValue = string.Join(",", stringArr);
            scriptString += strValue + "); \n";
        }

    }
    File.WriteAllText(output, scriptString += ";");
}

暫無
暫無

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

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