1

DevExpressのgridViewをSQLテーブルにエクスポートする方法について少しコースを読む必要があります。値のFirstName、Father Name、Last NameをテーブルEmployeeにエクスポートし、多くの行があります。すべての行にループするにはどうすればよいですか。データベースにデータを送信します。

事前にThx

私はこのコードを試しました:

string sql = @"INSERT INTO Emp (@FName, @MName,@LName, @Code, @TaxNb, @SSN, @EmploymentType, @DOB, @MarStat, @RegNum, @BadgeNum, @HireDate, @TaxSince, @HireSince, @ArEmpName, @ArFatherName, @ArLastName, ArPayUnit)";

DataTable table = new DataTable();
try
{
    SqlConnection connection = new SqlConnection(@"workstation id = PC-PC; user id=sa;Password=sapassword; data source=pc-pc; persist security info=True;initial catalog=CleanPayrollTest2");

    SqlCommand command = new SqlCommand(sql, connection);
    SqlDataAdapter adapter = new SqlDataAdapter();
    adapter.InsertCommand = command;
    connection.Open();
    // for (int i =0; i< gridView3.RowCount; i++)
    //{
    //command.Parameters.Add(@FirstName, gridView3.GetRowCellValue(i,gridView3.Columns));
    //adapter.InsertCommand.ExecuteNonQuery();
    //}

    SqlParameter[] MyParams = new SqlParameter[28];

    MyParams[0] = new SqlParameter("@FName", SqlDbType.VarChar, 20);
    MyParams[0].SourceColumn = FirstName;
    command.Parameters.Add("@FName", SqlDbType.VarChar, 20);

    MyParams[1] = new SqlParameter("@MName", SqlDbType.VarChar, 20);
    MyParams[1].SourceColumn = FatherName;

    MyParams[2] = new SqlParameter("@LName", SqlDbType.VarChar, 20);
    MyParams[2].SourceColumn = LastName;
4

1 に答える 1

1

SqlDataAdapterクラスから:

SqlDataAdapterは、データを取得および保存するためのDataSetとSQLServer間のブリッジとして機能します。

あなたが説明したシナリオでは、そのような「ブリッジ」は必要ありません。を使用しSqlCommand、のコレクションを追加しSqlParameterてから、を呼び出しExecuteNonQuery()て挿入を実行するだけです。

using(SqlConnection connection = new SqlConnection(@"workstation id = PC-PC; user id=sa;Password=sapassword; data source=pc-pc; persist security info=True;initial catalog=CleanPayrollTest2"))
{
    using(SqlCommand command = new SqlCommand(sql, connection))
    {
        try
        {
            connection.Open();  
            for (int i =0; i< gridView3.RowCount; i++)
            {
                SqlParameter parameter = new SqlParameter();
                // TODO: handle name accordingly (MName, LName etc.)
                parameter.ParameterName = "@FName";
                // TODO: handle type accordingly
                parameter.SqlDbType = SqlDbType.NVarChar; 
                parameter.Direction = ParameterDirection.Input;
                // TODO: use the field name accordingly
                parameter.Value = Convert.ToString(gridView3.GetRowCellValue(i, "FieldName"));
                // add the parameter to the command
                command.Parameters.Add(parameter);
            }
            command.ExecuteNonQuery();
        }
        catch(Exception)
        {
            // TODO: handle the exception
        }

    }
}

注:SQL関連のオブジェクトをコード内に配置する必要があります。これを行うための便利な方法は、usingステートメントを使用することです。

于 2013-02-06T11:43:46.407 に答える