using Amazon.Runtime.Internal;
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
using MongoDB.Driver;
using RestSharp;
using System;
using System.Collections.Generic;
using System.Data;
using System.Net;
using System.Net.Http.Json;
using System.Net.Sockets;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml.Linq;
using static MongoDB.Driver.WriteConcern;
namespace MongoDB_online
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
char _double_quotes = (char)34;
MongoClient _client;
private bool connect_db()
{
bool connect_ok = false;
const string connectionUri = "mongodb+srv://你的連接字串";
var settings = MongoClientSettings.FromConnectionString(connectionUri);
settings.ServerApi = new ServerApi(ServerApiVersion.V1);
_client = new MongoClient(settings);
try
{
var result = _client.GetDatabase("admin").RunCommand<BsonDocument>
(new BsonDocument("ping", 1));
Console.WriteLine("Pinged your deployment. You successfully connected to
MongoDB!");
connect_ok = true;
return connect_ok;
}
catch (Exception ex)
{
Console.WriteLine(ex);
connect_ok = false;
return connect_ok;
}
}
private void Form1_Load(object sender, EventArgs e)
{
_IP_str = get_IP2();
if (connect_db())
{
list_all_data();
}
else
{
MessageBox.Show("Connect Error");
}
}
private System.Data.DataTable _tb;
DataRow _NewRow;
public async void list_all_data()
{
_tb = new System.Data.DataTable("table");
_tb.Clear(); //清空表格
_tb.Rows.Clear();//清空資料
_tb.Columns.Clear();
_tb.AcceptChanges();
dataGridView1.DataSource = null; //清除數據來源
dataGridView1.DefaultCellStyle.Font = new Font("Verdana", 11,
FontStyle.Bold);
dataGridView1.AllowUserToAddRows = false;
dataGridView1.AutoSizeColumnsMode =
DataGridViewAutoSizeColumnsMode.AllCells;
dataGridView1.DataSource = _tb;
var database = _client.GetDatabase("Test");
var collection = database.GetCollection<BsonDocument>("Activity");
var LS = await collection.Find(new BsonDocument()).ToListAsync();
List<String> fild_name = new List<string>();
fild_name.Clear();
fild_name = LS[0].Names.ToList();
for (int i = 0; i < fild_name.Count; i++)
{
DataColumn colItem = new DataColumn(fild_name[i],
Type.GetType("System.String"));
_tb.Columns.Add(colItem);
}
for (int i = 0; i < LS.Count; i++)
{
_NewRow = _tb.NewRow();
for (int j = 0; j < fild_name.Count; j++)
{
_NewRow[fild_name[j]] = LS[i].GetValue(fild_name[j]);
}
_tb.Rows.Add(_NewRow);
}
}
private void insert_data(String MB, String CPU, String GPU)
{
var database = _client.GetDatabase("Test");
var collection = database.GetCollection<BsonDocument>("Activity");
collection.InsertOne(new BsonDocument
{
{ "IP", "192.168.1.1" },
{ "UserName", "Name" },
{ "Time", DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss") },
{ "MB", MB },
{ "CPU", CPU },
{ "GPU", GPU },
{ "storage1", "S1" },
{ "storage2", "S2" },
{ "storage3", "S3" },
{ "storage4", "S4" },
{ "storage5", "S5" },
{ "storage6", "S6" },
});
}
private void button1_Click(object sender, EventArgs e)
{
insert_data(txt_MB.Text, txt_CPU.Text, txt_GPU.Text);
list_all_data();
}
static String _IP_str = "";
private String get_IP2() // 取得內網 IP
{
var host = Dns.GetHostEntry(Dns.GetHostName());
foreach (var ip in host.AddressList)
{
if (ip.AddressFamily == AddressFamily.InterNetwork)
{
_IP_str = ip.ToString();
//Console.WriteLine("IP Address = " + ip.ToString());
}
}
return _IP_str;
}
/// <summary>
/// 取得外網 IP Address
/// </summary>
/// <returns></returns>
private String get_IP() //取得外網IP
{
String ip = "";
try
{
using (var webClient = new WebClient())
{
webClient.Headers.Add("user-agent", "Mozilla/5.0 (Windows NT 10.0;
WOW64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/51.0.2704.103 Safari/537.36");
var response =
webClient.DownloadString("http://www.whatismyip.com.tw");
string pattern = @"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}";
ip = Regex.Match(response, pattern).ToString();
MessageBox.Show(ip);
}
}
catch
{
ip = "get error";
}
return ip;
}
BsonDocument data = new BsonDocument
{
{ "IP", _IP_str },
{ "Time", DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss") },
};
private void button2_Click(object sender, EventArgs e)
{
var database = _client.GetDatabase("Test");
var collection = database.GetCollection<BsonDocument>("Activity");
collection.DeleteMany(new BsonDocument
{
{ "IP", txt_IP.Text },
});
list_all_data();
}
private void button3_Click(object sender, EventArgs e)
{
list_all_data();
}
private void dataGridView1_CellMouseClick(object sender,
DataGridViewCellMouseEventArgs e)
{
try
{
Int32 selectedCellCount =
dataGridView1.GetCellCount(DataGridViewElementStates.Selected);
int rowindex = dataGridView1.CurrentRow.Index;
if (selectedCellCount > 0)
{
for (int i = 0; i < selectedCellCount; i++)
{
txt_id.Text =
dataGridView1.Rows[dataGridView1.SelectedCells[i].RowIndex]
.Cells[0].Value.ToString();
}
}
}
catch (Exception ex)
{
}
}
private void btn_update_by_id_Click(object sender, EventArgs e)
{
if (txt_id.Text != "")
{
update_data(txt_MB.Text, txt_CPU.Text, txt_GPU.Text, txt_id.Text);
}
else
{
MessageBox.Show("請點選要更新的資料");
}
}
private void update_data(String MB, String CPU, String GPU, String id)
{
var newDocument = new BsonDocument
{
{ "$set", new BsonDocument { { "MB", MB },{ "CPU", CPU }, { "GPU", GPU }
} },
};
var database = _client.GetDatabase("Test");
var collection = database.GetCollection<BsonDocument>("Activity");
var filter = Builders<BsonDocument>.Filter.Eq("_id", ObjectId.Parse(id));
collection.UpdateOne(filter, newDocument);
list_all_data();
}
private void btn_delete_use_id_Click(object sender, EventArgs e)
{
var database = _client.GetDatabase("Test");
var collection = database.GetCollection<BsonDocument>("Activity");
if (txt_id.Text != "")
{
collection.DeleteOne(new BsonDocument
{
{ "_id", ObjectId.Parse(txt_id.Text) },
});
list_all_data();
}
else
{
MessageBox.Show("");
}
}
private void btn_find_use_MB_Click(object sender, EventArgs e)
{
find_use_MB();
}
private async void find_use_MB()
{
_tb = new System.Data.DataTable("table");
_tb.Clear(); //清空表格
_tb.Rows.Clear();//清空資料
_tb.Columns.Clear();
_tb.AcceptChanges();
dataGridView1.DataSource = null; //清除數據來源
dataGridView1.DefaultCellStyle.Font = new Font("Verdana", 11,
FontStyle.Bold);
dataGridView1.AllowUserToAddRows = false;
dataGridView1.AutoSizeColumnsMode =
DataGridViewAutoSizeColumnsMode.AllCells;
dataGridView1.DataSource = _tb;
var database = _client.GetDatabase("Test");
var filter = Builders<BsonDocument>.Filter.Eq("MB", txt_MB.Text);
var collection = database.GetCollection<BsonDocument>("Activity");
var LS = await collection.Find(filter).ToListAsync();
if (LS.Count > 0)
{
List<String> fild_name = new List<string>();
fild_name.Clear();
fild_name = LS[0].Names.ToList();
for (int i = 0; i < fild_name.Count; i++)
{
DataColumn colItem = new DataColumn(fild_name[i],
Type.GetType("System.String"));
_tb.Columns.Add(colItem);
}
for (int i = 0; i < LS.Count; i++)
{
_NewRow = _tb.NewRow();
for (int j = 0; j < fild_name.Count; j++)
{
_NewRow[fild_name[j]] = LS[i].GetValue(fild_name[j]);
}
_tb.Rows.Add(_NewRow);
}
}
else
{
MessageBox.Show("沒有找到相關資料");
}
}
}
}