テーブル (文字列)、列の配列 (文字列)、値の配列 (オブジェクト) をパラメーターを介して渡すことができるメソッドを開発しました。これを使用して、パラメーター化されたクエリを作成します。コードの長さと複数の for ループがコードの匂いを放っていることは問題ありませんが、特に、列と値の間にコンマを挿入するために使用する方法は、別のより良い方法で実行できると感じています。
public static int Insert(string source, string[] column, object[] values)
{
int rowsAffected = 0;
try
{
using (SQLiteConnection conn = new SQLiteConnection(connectionString))
{
StringBuilder query = new StringBuilder();
query.Append(" INSERT INTO ");
query.Append(source);
query.Append("(");
for (int i = 0; i < column.Length; i++)
{
query.Append(column[i]);
if (i < values.Length - 1)
{
query.Append(",");
}
}
query.Append(")");
query.Append(" VALUES ");
query.Append("(");
for (int i = 0; i < values.Length; i++)
{
query.Append("@" + values[i].ToString());
if (i < values.Length - 1)
{
query.Append(",");
}
}
query.Append(")");
conn.Open();
using (SQLiteCommand cmd = new SQLiteCommand(query.ToString(), conn))
{
for (int i = 0; i < values.Length; i++)
{
cmd.Parameters.AddWithValue("@" + values[i].ToString(), values[i]);
}
rowsAffected = cmd.ExecuteNonQuery();
}
}
return rowsAffected;
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
return 0;
}
System.Data.SQLiteライブラリを使用してデータベースとやり取りしています。
ご提案ありがとうございます。