Проверка условия, какую таблицу вставить - PullRequest
0 голосов
/ 29 февраля 2012

Я хочу проверить "refno", уже присутствующее в таблице Tbldelivery. Если присутствует "refno", он будет вставлен в "Tbldeliverydetails", потому что "refno" является первичным ключом в первой таблице.Где я проверяю условие?

Вот код, который я написал на C #:

protected void btndlysave_Click(object sender, EventArgs e)
{
    SqlConnection SqlCon = new SqlConnection("server=(local);Initial Catalog=TestDB;Integrated Security=SSPI;");
    try
    {
        SqlCon.Open();

        SqlCommand cmd = new SqlCommand("insert into Tbldelivery (refno,deliverdate,requestby,projectcode) values 
        (@refno,@deliverdate,@requestby,@projectcode)               WHERE not exists (select refno from Tblinkdelivery where refno = @refno)", SqlCon);
        cmd.CommandType = CommandType.Text;

        if ( need check here)

        cmd.Parameters.AddWithValue("@refno", txtdelrefno.Text.Trim());
        cmd.Parameters.AddWithValue("@deliverdate", txtdeldate.Text.Trim());
        cmd.Parameters.AddWithValue("@requestby", txtdelreq.Text.Trim());
        cmd.Parameters.AddWithValue("@projectcode", ddlprojcode.Text.Trim());
        }

        else
        {

        SqlCommand cmd2 = new SqlCommand("insert into Tbldeliverdetails (refno,printercode,inkcode,quantity,price,notes) values             (@refno,@printercode,@inkcode,@quantity,@price,@notes)", SqlCon);
        cmd2.CommandType = CommandType.Text;

        cmd2.Parameters.AddWithValue("@refno", txtdelrefno.Text.Trim());
        cmd2.Parameters.AddWithValue("@printercode", ddldelprcode.Text.Trim());
        cmd2.Parameters.AddWithValue("@inkcode", ddlinkcode.Text.Trim());
        cmd2.Parameters.AddWithValue("@quantity", txtdelqty.Text.Trim());
        cmd2.Parameters.AddWithValue("@price", txtdelprice.Text.Trim());
        cmd2.Parameters.AddWithValue("@notes", txtdelnotes.Text.Trim());

        int val1 = cmd.ExecuteNonQuery();
        int val2 = cmd2.ExecuteNonQuery();
    }
    finally
    {
        SqlCon.Close();
    }
}

Ответы [ 2 ]

1 голос
/ 29 февраля 2012

Я думаю, прежде всего вам нужно организовать свой код.Писать все внутри события button click совсем нехорошо.Лучше, если вы сможете отделить бизнес-логику и поставить ее отдельно.Попробуйте что-то вроде этого.Вы можете создать Data Access класс, который обрабатывает ваш доступ к данным.В вашем классе доступа к данным

public SqlConnection OpenConnection()
        {
            try
            {
                var  conn = new SqlConnection(“xxx”);
                conn.Open();
                return conn;
            }
            catch (Exception ex)
            {
                //log the exception
                return null;
            }
        }

YourFunction(parameters)
{
    var conn = OpenConnection();
    if(conn != null)
    {
        //your code
        // you can do something similar as JeremyK explained here 
    }

}

И в вашей кнопке нажмите

protected void btndlysave_Click(object sender, EventArgs e)
{
    //CHECK THE PARAMETERS AND PASS
    //DataAccess. YourFunction(parameters)
}
0 голосов
/ 29 февраля 2012

Вы запрашиваете таблицу и смотрите, существует ли она.

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();

    SqlCommand sqlCommand = 
        new SqlCommand("SELECT * FROM dbo.Tbldelivery WHERE refno=@refno", 
                        connection);

    sqlCommand.Parameters.Add("@refno", System.Data.SqlDbType.VarChar);
    sqlCommand.Parameters["@refno"].Value = refnoValue;

    SqlDataReader reader = sqlCommand.ExecuteReader();
    reader.Read();
    if (reader.HasRows)
    {
    // refno exists
    }
    else
    {
    // refno does not exist
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...