0
     private void Save_Click(object sender, EventArgs e)
    {
        string strconn = @"Server=.\SQLEXPRESS;initial catalog=PharmacyV2;integrated   security=true;";
        SqlConnection conn = new SqlConnection(strconn);
        //SqlCommand cmd = new SqlCommand();
         DataSet ds = new DataSet();
        conn.Open();
        SqlDataAdapter da = new SqlDataAdapter("select * from Units",conn);
        da.Fill(ds, "Units");
        bool found = false;
        for (int i = 0; i < dataGridView1.Rows.Count; i++)
        {

            for (int j = 0; j < ds.Tables["Units"].Rows.Count; j++)
            {


                if (ds.Tables["Units"].Rows[j][0].ToString() == dataGridView1.Rows[i].Cells[0].Value.ToString())
                {
                    found = true;
                    break;
                }

            }

            if (found==false)
            {

                SqlCommand cmd;
                cmd = new SqlCommand("insert into Units (Unit_name) values (@name)", conn);
                cmd.Parameters.AddWithValue("@name", dataGridView1.Rows[i].Cells[0].Value.ToString());
                cmd.ExecuteNonQuery();
                MessageBox.Show("تمت الاضافه");


            }
        }
        conn.Close();

    }

my program compare the each element from datagridview with every element from Uint table from database to prevent duplicate in database if element from datagridvoew is not Similar to element in uint table in database implement insert statement Why the program does not insert any data to database? (Does not implement the insert statement )

4

2 に答える 2

0

最初の for ループ内で見つかった変数を false に初期化します。

found = false;

反復ごとに初期状態に設定されるようにします。それ以外の場合は、一度 true に設定すると常に true になります。それが、insert ステートメントが実行されない理由です。

したがって、for ループは次のようになります。

    for (int i = 0; i < dataGridView1.Rows.Count; i++)
    {
        found = false;

        for (int j = 0; j < ds.Tables["Units"].Rows.Count; j++)
        {


            if (ds.Tables["Units"].Rows[j][0].ToString() == dataGridView1.Rows[i].Cells[0].Value.ToString())
            {
                found = true;
                break;
            }

        }

        if (found==false)
        {

            SqlCommand cmd;
            cmd = new SqlCommand("insert into Units (Unit_name) values (@name)", conn);
            cmd.Parameters.AddWithValue("@name", dataGridView1.Rows[i].Cells[0].Value.ToString());
            cmd.ExecuteNonQuery();
            MessageBox.Show("تمت الاضافه");


        }
    }
于 2013-11-02T20:05:51.657 に答える
0

データベースにエントリが存在するかどうかを確認するように依頼してはどうでしょうか。

var unitName = dataGridView1.Rows[i].Cells[0].Value.ToString();
var command = new SqlCommand("SELECT COUNT(*) FROM Units WHERE Unit_name = @name", connection);
command.Parameters.AddWithValue("@name", unitName);

int result = (int)command.ExectureScalar();

if(result == 0) // no entry
{
     //Insert.
}
于 2013-11-02T20:49:07.227 に答える