0

質問があります.datatableからsqlにデータを転送したい.Webサービスから受け取ったデータをdatatableに転送したい.この操作をループで行っている.この操作をループでやりたくない.行う?私のコード;

DataTable gelendata = new DataTable();

private void cari_aktar()
{
    SqlCeConnection dataset_baglanti = conn.baglan();

    ARMINE_SHOP.WebReference.bulten terminal = new ARMINE_SHOP.WebReference.bulten();

    gelendata = terminal.CARILER_MAGAZACILIK("armine_webservice", "pass***", "MikroDB_V14_ARMINE").Tables[0];

    foreach (datarow row in gelendata.rows)
    {
        k = k + 1;
        progressbar1.value = k;

        if (row["cari_kod"] == dbnull.value)
        {
            cari_kod = "";
        }
        else
        {
            cari_kod = (string)row["cari_kod"];
        }
        sqlcecommand cari_ekle = new sqlcecommand("ınsert ınto carı_hesaplar (cari_kod) values (@cari_kod)", dataset_baglanti);
        cari_ekle.parameters.clear();
        cari_ekle.ExecuteNonQuery();
    }

コードを試してみました

SqlCeDataAdapter da = new SqlCeDataAdapter();

da.InsertCommand =new SqlCeCommand("INSERT INTO CARI_HESAPLAR (cari_kod) VALUES (@cari_kod)", dataset_baglanti);

da.InsertCommand.Parameters.Add("@cari_kod", SqlDbType.NVarChar, 50, "cari_kod");

da.Update(terminal.CARILER_MAGAZACILIK("armine_webservice","pass***", "MikroDB_V14_ARMINE"));

あなたの助けを待っています...

ありがとう....

4

1 に答える 1

0

これをSqlCeで使用できるかどうかはわかりませんが、MsSqlConnectionでは次のように使用できます

SqlCommandBuilder cmdb = (SqlCommandBuilder)this.CreateCommandBuilder();
cmdb.DataAdapter = (SqlDataAdapter)this.CreateDataAdapter(SQL, connection);
cmdb.RefreshSchema();
SqlDataAdapter dta = cmdb.DataAdapter;
dta.InsertCommand = cmdb.GetInsertCommand(true);
dta.UpdateCommand = cmdb.GetUpdateCommand(true);
dta.DeleteCommand = cmdb.GetDeleteCommand(true);
dta.Update(dataTable);

これは、簡単に理解できるように、私自身のフレームワークからコピーされたものです。

  • CreateCommandBuilder は CommandBuilder インスタンサーです
  • CreateDataAdapter は、SQL が 'SELECT * FROM tablename WHERE ??' である DataAdapter Instancer です。
  • GetInsertCommand は INSERT コマンドです
于 2013-03-06T10:42:40.483 に答える