C#、.net 4、Visual Studio 2010、および SQL Server 2008 を使用。
NewPeriodPareto
現在、次の列を含むというテーブルがあります。
- PG nvarchar(50)
- 一部 nvarchar(50)
- フロート
- LostSalesフロート
- Pareto6 int
- p6画像
- Pareto5 int
- p5画像
- Pareto4 int
- p4画像
- Pareto3 int
- p3画像
- CurrentPareto int
- p新規画像
- NewPareto int
以下は、テーブルを埋めようとする私のコードです:
private void CreateNewPeriod()
{
DataSet dsDG = new DataSet();
DataTable dt = new DataTable();
dsDG = (DataSet)ParetoGrid.DataSource;
dt = dsDG.Tables[0];
string ThetableName = "NewPeriodPareto";
BulkInsertDataTable(myConn, ThetableName, dt);
}
public static void BulkInsertDataTable(string connectionString, string tableName, DataTable table)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlBulkCopy bulkCopy =
new SqlBulkCopy
(
connection,
SqlBulkCopyOptions.TableLock |
SqlBulkCopyOptions.FireTriggers |
SqlBulkCopyOptions.UseInternalTransaction,
null
);
bulkCopy.DestinationTableName = tableName;
connection.Open();
bulkCopy.WriteToServer(table);
connection.Close();
}
}
ご覧のとおり、提供されたコードはデータテーブルからデータをコピーしようとします。データテーブルは、My データ グリッド ソースにバインドされます。
以下は私が得るエラーです:
@bulkCopy.WriteToServer(テーブル);
データ ソースからの Int32 型の指定された値は、指定されたターゲット列のイメージ型に変換できません。
今私が最初に考えたのは、SQL テーブルのフィールドの 1 つで型が間違って設定されていたということですが、何度もチェックした後、何も問題はないようです。
したがって、私が求めているのは、この小さな問題の解決策、またはプログラムの DataTable から SQL テーブルを埋めるという同じ目標を達成するための代替/簡単な方法です。