|
分類:[C#]
めちゃくちゃお久しぶりです。杜若桔梗です。
表記の通り、C#でWMI情報を取得し、取得結果をDBにまとめたいと考えています。
それぞれ、格納部分とWMI取得部分はうまくいったのですが、一つのプログラムにまとめる際にローカル変数とグローバル変数なんぞで引っかかってしまいました。
そこで、相談ですが、foreach関数で取得した変数を{}の外で使う方法はないでしょうか・・・・?
以下、ソースコードを貼り付けします。
DBはDB2 9.7 Express-CでVisual Studio 2005 Professionalです。
--ここから--
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Management;
using IBM.Data.DB2;
namespace UserRegist
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//ユーザー登録のための変数宣言
string familyname = textBox1.Text; //姓
string givenname = textBox2.Text; //名
string mailaddress = textBox3.Text; //メールアドレス
//PC情報収集のための変数宣言
string SerialNumber; //製造番号
string Vender; //製造会社
string Mtype; //モデル
//製造番号取得用ルーチン
ManagementClass bios = new ManagementClass("Win32_BIOS");
ManagementObjectCollection objsetbios = bios.GetInstances();
foreach (ManagementObject objbios in objsetbios)
SerialNumber = objbios["SerialNumber"].ToString();
//PC情報収集ルーチン
ManagementClass pcinfo = new ManagementClass("Win32_ComputerSystem");
ManagementObjectCollection objsetpcinfo = pcinfo.GetInstances();
foreach (ManagementObject objpcinfo in objsetpcinfo)
{
Vender = objpcinfo["Vender"].ToString();
Mtype = objpcinfo["Type"].ToString();
}
//----ここまで情報取得系----
//Database接続
DB2ConnectionStringBuilder conn = new DB2ConnectionStringBuilder();
conn.Server = "xxxxxx";
conn.UserID = "UserID";
conn.Password = "Password";
conn.Database = "Database";
DB2Connection con = new DB2Connection(conn.ConnectionString);
DB2Command Number1 = con.CreateCommand();
DB2Command Number2 = con.CreateCommand();
//ユーザー登録関係
Number1.CommandText = "select num count from usertable";
Number2.CommandText = "select num from usertable where mailaddress = '" + mailaddress + "';";
con.Open();
DB2DataReader reader2 = Number2.ExecuteReader();
int num2 = reader2.GetInt32(0);
//すでに登録済みメールアドレスは登録しない
if (reader2 == null)
{
DB2DataReader reader1 = Number1.ExecuteReader();
int num1 = reader1.GetInt32(0);
num1++;
DB2Command userdata = con.CreateCommand();
userdata.CommandText = "insert into usertable(num,familyname,givenname,mailaddress) values('" + num1 + "','" + familyname + "','" + givenname + "','" + mailaddress + "');";
userdata.ExecuteNonQuery();
}
//ここからマシン情報登録ルーチン
//UserNumとSerialが同じだったら同一人物の同一PCと判定
DB2Command judge1 = con.CreateCommand();
DB2Command judge2 = con.CreateCommand();
judge1.CommandText = "select userno from pcreglist where serialno = '" + SerialNumber + "';";
judge2.CommandText = "select count userno from pcreglist";
DB2DataReader readerJudge1 = judge1.ExecuteReader();
DB2DataReader readerCount = judge2.ExecuteReader();
int userno = readerJudge1.GetInt32(0);
if (readerJudge1 == null)
{
int count = readerCount.GetInt32(0);
count++;
DB2Command pcinfo1 = con.CreateCommand();
pcinfo1.CommandText = "insert into pcreglist(num,Vender,serialno,userno,mtype) values ('" + count + "','" + Vender + "','" + SerialNumber + "','" + userno + "','" + Mtype + "');";
pcinfo1.ExecuteNonQuery();
}
if(userno == num2)
{
MessageBox.Show("登録済みです");
}
if (userno != num2 && readerJudge1 != null)
{
DB2Command pcinfo1 = con.CreateCommand();
pcinfo1.CommandText = "update pcreglist set userno = '" + userno + "' where serialno = '" + SerialNumber + "';";
pcinfo1.ExecuteNonQuery();
}
MessageBox.Show("登録が終了しました。");
}
}
}
--ここまで--
お手数をおかけしますがよろしくお願いします。
|