gpt4 book ai didi

c# - C#将列动态添加到数据库中的表

转载 作者:太空宇宙 更新时间:2023-11-03 18:00:51 24 4
gpt4 key购买 nike

我仍在学习一些编程知识,因此这可能是一个显而易见的问题,但是我正在编写一个程序,用户可以在其中导入无列限制的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);
}

关于c# - C#将列动态添加到数据库中的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1569685/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com