簡體   English   中英

您能幫我更新后顯示datagridview和Refresh嗎?

[英]Can you help me to show datagridview and Refresh after update?

這是我的代碼和錯誤消息,當您運行時說:

System.Data.SqlClient.SqlException類型的未處理的異常發生在System.Data.dll中

在這個da.fill(dt);

SqlConnection con = new SqlConnection("Data Source=ANTONIANGGA-PC\\SQLEXPRESS;Initial Catalog=FullandStarving;Integrated Security=True");
SqlCommand cmd;
SqlDataAdapter da;
DataTable dt = new DataTable();

public FormProduksi()
{
   InitializeComponent();
   showgridview();     
}

private void showgridview()
{
    con.Open();
    dt.Clear();
    cmd = new SqlCommand("SELECT * FROM Produksi", con);
    //cmd.CommandType = CommandType.StoredProcedure; done :D
    da = new SqlDataAdapter(cmd);
    da.Fill(dt);
    dataGridView1.DataSource = dt;
    con.Close();
}

private void button2_Click(object sender, EventArgs e)
{
    //Datetimepicker to Database
    string dProduksi = DateTime.Parse(dtmProduksi.Text).ToString("yyyy-MM-dd");

    try{
        con.Open();
        cmd = new SqlCommand("insert into Produksi (IDProduksi,IDPhoto,TanggalProduksi,NamaKaryawan,KeteranganPhoto) Values('" + txtIdpro.Text + "','" + txtIdPhoto.Text + "','" + dProduksi + "','" + txtNamaKaryawan.Text + "','" + rxtKtrphoto.Text + "')", con);
        cmd.ExecuteNonQuery();
        MessageBox.Show("Update telah di jalankan");
        showgridview();
        clear();
        con.Close();

    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

現在完成

更新成功

該更新成功,但無法刷新,所以我退出了該表單並打開可以看到它 更新

您正在關閉連接

con.Close();

然后使用

da.Fill(dt);

只需交換以下行:

showgridview();
con.Close();

例如,使用DbDataAdapter.Fill

筆記:

1

Yoy應該使用參數化查詢,以便避免SQL注入攻擊

var cmd = new SqlCommand("SELECT EmpName FROM Employee WHERE EmpID = @id", con);
cmd.Parameters.AddWithValue("@id", id.Text);

2

SqlConnectionSqlCommand包裝為using以便那些using任何資源都將被處置

string position;

using (SqlConnection con = new SqlConnection("server=free-pc\\FATMAH; Integrated Security=True; database=Workflow; "))
{
  con.Open();

  using (var cmd = new SqlCommand("SELECT EmpName FROM Employee WHERE EmpID = @id", con))
  {
    cmd.Parameters.AddWithValue("@id", id.Text);

    var name = cmd.ExecuteScalar();

    if (name != null)
    {
       position = name.ToString();
       Response.Write("User Registration successful");
    }
    else
    {
        Console.WriteLine("No Employee found.");
    }
  }
}

信用

只需如下更改showgridview()函數,即可正確打開和關閉連接。

還要檢查您的sql查詢, 提供空間並維護查詢的語法

SELECT * FROM Produksi

錯誤屏幕截圖清楚地說明了具有該名稱的存儲過程不存在 在此處輸入圖片說明

將這些行注釋為以下代碼

void showgridview()
{
    con.Open();
    dt.Clear();
    cmd = new SqlCommand("SELECT * FROM Produksi", con);
    //cmd.CommandType = CommandType.StoredProcedure;
    da = new SqlDataAdapter(cmd);
    da.Fill(dt);
    dataGridView1.DataSource = dt;
    con.Close();
}

這樣您就不會遇到連接問題和相關的錯誤。

按鈕單擊代碼可如下更改閉合連接

private void button2_Click(object sender, EventArgs e)
{
    //Datetimepicker to Database
    string dProduksi = DateTime.Parse(dtmProduksi.Text).ToString("yyyy-MM-dd");

    try
    {
        con.Open();
        cmd = new SqlCommand("insert into Produksi (IDProduksi,IDPhoto,TanggalProduksi,NamaKaryawan,KeteranganPhoto) Values('" + txtIdpro.Text + "','" + txtIdPhoto.Text + "','" + dProduksi + "','" + txtNamaKaryawan.Text + "','" + rxtKtrphoto.Text + "')", con);
        cmd.ExecuteNonQuery();
        MessageBox.Show("Update telah di jalankan");
        con.Close();
        showgridview();
        clear();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

另外,為進一步閱讀:

參數化查詢與SQL注入

為什么我們總是喜歡在SQL語句中使用參數?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM