[英]C# Dynamically Add Columns to table in Database
我仍在學習一些編程知識,因此這可能是一個顯而易見的問題,但是我正在編寫一個程序,用戶可以在其中導入無列限制的excel文件(這意味着每個excel文件可以具有不同數量的列)等等)。 我想做的是能夠使用SQLite將導入的Excel文件轉換成數據庫表。 據我所讀,SQLite的語法與ADO語法相同,但是我不確定如何在數據庫中動態創建表。 我正在尋找任何形式的建議,如果有人想在代碼中顯示一個很棒的示例。
謝謝! 內森
這是在sqlite中創建表的一段代碼:
SQLiteConnection mDBcon = new SQLiteConnection();
mDBcon.ConnectionString = "Data Source=" + DataSourcePath;
mDBcon.Open();
SQLiteCommand cmd = new SQLiteCommand(mDBcon);
cmd.CommandText = "CREATE TABLE IF NOT EXISTS tags (ISBN VARCHAR(15), Tag VARCHAR(15));";
cmd.ExecuteNonQuery();
請注意,在SQLite中,您只能將列添加到現有表中,並且只能添加到表的末尾:
cmd.CommandText = "ALTER TABLE books ADD COLUMN PublishDate DateTime;";
cmd.ExecuteNonQuery();
加成
假設您已將數據從excel導入到數據集,則現在可以遍歷數據集的數據表,創建相應的表並填充它們:(免責聲明,未經測試)
foreach(DataTable table in dataSet.Tables)
{
SQLiteCommand cmd = new SQLiteCommand(mDBcon);
cmd.CommandText = "CREATE TABLE IF NOT EXISTS " + table.Name + "(";
bool first = true;
foreach (DataColumn column in table.Columns)
{
cmd.CommandText += "@"+column.Name;
if (!first) cmd.CommandText += ",";
else first = false;
cmd.Parameters.Add(new SQLiteParameter("@"+column.Name, column.Name));
}
cmd.CommandText += ");";
cmd.ExecuteNonQuery();
// Fill the new table:
SQLiteDataAdapter da = new SQLiteDataAdapter("select * from " + table.Name, mDBcon);
da.Fill(table);
}
您可以使用ExecuteNonQuery來創建表,並使用標准的SQLite查詢語言CREATE TABLE 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.