SQLデータベースにデータセットを挿入しようとしていますが、DBセットの引数としてデータセットを渡すことができません。私は引数として渡すことが許可されているかどうかはわかりません。そうでない場合は、私の選択肢は何ですか?C#SQLデータベースにデータセットを挿入する
私は私のデータセットを作成する方法:
public static void getLogs() {
string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\someDir";
SQLiteConnection cn = new SQLiteConnection("Data Source=" + path + ";Version=3;New=False;Compress=True;");
cn.Open();
SQLiteDataAdapter sd = new SQLiteDataAdapter("SELECT * FROM table", cn);
DataSet ds = new DataSet();
sd.Fill(ds);
cn.Close();
db.InsertLogs(Form1.adminID, Form1.deviceID, ds);
}
私のデータベースのクラスとメソッドを挿入しますが、以下のようになります。
public void InsertLogs(string user_id, string device_id, DataSet history)
{
string query = "INSERT INTO table (column1, column2, column3, column4, column5, column6, column7) VALUES (@value1, @value2, @value3, @value4, @value5, @value6, @value7);";
if (OpenConnection() == true)
{
foreach (DataTable table in history.Tables)
{
foreach (DataRow row in table.Rows)
{
MySqlCommand cmd = new MySqlCommand(query, connection);
cmd.Parameters.AddWithValue("@value1", int.Parse(user_id));
cmd.Parameters.AddWithValue("@value2", int.Parse(device_id));
cmd.Parameters.AddWithValue("@value3", row[0]);
cmd.Parameters.AddWithValue("@value4", row[1]);
cmd.Parameters.AddWithValue("@value5", row[2]);
cmd.Parameters.AddWithValue("@value6", row[3]);
cmd.Parameters.AddWithValue("@value7", row[4]);
cmd.ExecuteNonQuery();
}
}
CloseConnection();
}
}
あなたは、データセット内のDataTableをループすることができますあなたの
'datatable'を' datatable'に渡し、 'datatable'をdbに渡すオプションがあります。 –
UDTとして渡すと簡単になります。[こちら](https://www.aspsnippets.com/Articles/SqlBulkCopy--Bulk-Insert-records-and-Update-existing-rows-if-record-exists -using-C-and-VBNet.aspx)リンクはあなたを助けます –