2016-05-22 8 views
0

ListViewの項目をデータベースにコピーするにはどうすればよいですか?例:私はListViewのPCからインストールされたアプリケーションのリストを持っています。これらの項目をデータベースの文字列に挿入するにはProgramsC#(インストールされたアプリケーション)でデータベースにListViewを格納する方法

private void button1_Click(object sender, EventArgs e) 
{ 
    String uninstallKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"; 

    RegistryKey r = Registry.LocalMachine.OpenSubKey(uninstallKey); 

    foreach (String skName in r.GetSubKeyNames()) 
    { 
     RegistryKey rk = r.OpenSubKey(skName); 

     try { 
      var displayName = rk.GetValue("DisplayName"); 
      ListViewItem item; 

      if (displayName != null) { 
       item = new ListViewItem(new string [] { displayName.ToString() }); 
       listView1.Items.Add(item); 
      } 
     } 
     catch (Exception ex) 
     { } 
    } 
} 

ヘルプ!私はMySQLデータベースに項目を追加する必要があります

答えて

0

基本的には、あなたが見つけたアプリケーションごとに行を保存する必要があります。ループを使用し、適切にパラメータ化されたSQLクエリを使用してデータを挿入することで、これを最も効率的に行うことができます。

このような

何か(私はSQL Serverの男がいる、MySQLであまり慣れていないんだ - 多分私の構文が動作するように少し調整が必要 - しかし、あなたはどう進めるかの一般的なアイデアを得る必要があります):

// set up connection and define INSERT command 
string connectionString = .....(this typically is read from a config file)..... ; 

// not sure if you can use @ProgramName as parameter, or ?ProgramName... - seen both 
string insertQry = "INSERT INTO Programs(ProgramName) VALUES(@ProgramName);"; 

// define the connect and command objects 
using (MySqlConnection conn = new MySqlConnection(connectionString)) 
using (MySqlCommand cmd = new MySqlCommand(insertQry, conn)) 
{ 
    // define the parameter(s) *ONCE*, outside of the loop - including their type and max length 
    cmd.Parameters.Add("@ProgramName", MySqlDbType.VarChar, 250); 

    // open connection 
    conn.Open(); 

    // now, loop over your applications found in the registry; I'd suggest you put those 
    // applications found into a separate List<string> for easier use..... 
    foreach(ListViewItem item in listView1.Items) 
    { 
     // set parameter 
     cmd.Parameters["@ProgramName"].Value = item.DataItem.ToString(); // would be much simpler with a List<string> .... 

     // execute insert query for that parameter value 
     int rowsInserted = cmd.ExecuteNonQuery(); 
    } 

    // close connection 
    conn.Close(); 
} 

にレジストリで検出されたアプリケーション名を保存すると、検出されたアプリケーション名が格納されているオブジェクトに格納されている実際のデータを取得するのに、item.DataItemを使用する必要があります。コードは書いて理解するのが間違いなく簡単です....

関連する問題