2017-01-25 13 views
1

私のプログラムでは、DataGridviewからローカルデータベースにデータを挿入するためのプロブラムがあります。 - csv/excelファイルデータをdatagridviewにアップロードしてユーザーに表示します。データグリッドビューからローカルデータベースを作成/更新する

私のプログラムでは、外部キーと主キーでお互いに接続されている3つのlocalDBがあります。私は、localDBにdatagridviewからいくつかの列を挿入したいと思います。

ので、私の質問は以下のとおりです。

1.how私は私のlocalDBへのDataGridViewから適切にデータを挿入することができます。

2.ifはすでに存在していますが、挿入したくないですか?

これはDataGridViewの中で表示するためにファイルをアップロードするための私のコードです:

private void upload_to_datagridview(object sender, EventArgs e) 
    { 
     try 
     { 
      string Pathconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=\"Excel 8.0;HDR=Yes;\";"; 
      OleDbConnection conn = new OleDbConnection(Pathconn); 
      OleDbDataAdapter myDataAdaptor = new OleDbDataAdapter("Select * from [" + SheetName + "$]", conn); 
      System.Data.DataTable dt = new System.Data.DataTable(); 
      myDataAdaptor.Fill(dt); 
      dataGridView1.DataSource = dt; 
     } 

     catch(Exception) 
     { 
      MessageBox.Show("no workbook was uploaded please upload again!"); 
      wb.Close(false); 
      excel.Quit(); 
     } 

     wb.Close(false); 
     excel.Quit(); 
    } 

私はlocalDBへのDataGridViewからのデータを更新するためのいくつかのコードを見てきましたが、それは全体のDataGridViewた、すべての列、私は、datagridviewから特定の列を取得し、特定の列をdataDBから更新したいと考えています。

誰かが私にそれを正しく説明する方法を説明してくれたら、私は何かを見つけることができません。

ありがとうございました!

+1

を動作しなかった場合、私に教えてくださいvs.110).aspx –

+0

Ad.2あなたのdataTableにIDがないと仮定して、既存の行をDbに挿入したくない場合は、挿入する前にそれを確認する必要があります。もちろん、繰り返すことができます。 別のアプローチは、いくつかのテーブルの列に一意のキーを設定し、Try {} catch {}内でinsertを呼び出すことです。 –

+0

now.thanksを確認します – shlezz

答えて

1

私は、あなたのケースに代わる解決策を提供します。あなたの考え方を変えて考えさせてくれるでしょう。解決策は、csv/Excelの代わりにXMLを読み込んで保存することです。データをDatagridに一度だけロードしてXMLに保存することができます。それから、あなたはXMLデータを今すぐ持っていて、データグリッドコンテナにロードして操作し、最後にローカルマシンに保存することができます。

ます場合、私はいくつかのコード//表示XML

 
Please follow the steps : 
1) You need load csv/excel one time only and make sure to check update check box for datagridview , then you save it in XML 
2) Save it in XML format , use Write XML Code 
3) Load it again by using Read XML Code 
4) Update any data in any field then save it by using (Write XML Code)

//読むXML

DataSet ds1 = new DataSet(); 
ds1.ReadXml("d:/mahdi.xml"); 
dataGridView1.DataSource = ds1; 
dataGridView1.DataMember = "tlbName"; 

//書き込みXML

DataSet ds2 = new DataSet(); 
    dataGridView1.DataSource = ds2; 
    XmlTextWriter newXml = new XmlTextWriter("d:/mahdi.xml", Encoding.UTF8); 
    ds2.WriteXml(newXml); 

を提供して、私はアプローチのように知ってみましょうテキストボックス内

DataSet ds3 = new DataSet(); 
    StringWriter swXML = new System.IO.StringWriter(); 
    ds3.WriteXmlSchema(swXML); 
    textBox1.Text = swXML.ToString(); 

それはあなたのアプローチhttps://msdn.microsoft.com/pl-pl/library/system.data.oledb.oledbdataadapter.insertcommand(v=を使用して挿入する方法があります

+0

ありがとう、ありがとう – shlezz

関連する問題