[英]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.