私はC#言語に比較的慣れていませんが、Google検索とStack Overflowの多くの助けを借りて、Office、システムサービス、プロセス、WMI、SQL、Linq、ActiveDirectoryの操作を含む多くのアプリをすでに実行しました。 ..
これらのアプリを機能させることに成功したにもかかわらず、コードの練習やキーワードの多くの使用など、C#言語の多くのことについてはまだわかりません。
C#クラス; 私はそれらで何ができるかを知っています。コンストラクタとデストラクタ、インスタンス化とプロパティについては知っていますが、いつそれらを使用すべきかわかりません。これまで、さまざまなメソッド内のForm1.csファイルにすべてのコードを記述してきました。これらのメソッドは、完全に異なるAPIを使用してさまざまなことを実行します。これは明らかに、そのコードを維持しようとすることは非常に困難になる可能性があり、Form1.cs内で何かを見つけることはますます苛立たしいことに気づいていることを意味します。
皆さんへの私の質問は、コードを異なるクラスに分割する必要があるかどうかです。SqlConnectionとSqlCommandsに関連するものを別のクラスに分割しようとしましたが、Form1.csで同じクラスを複数回インスタンス化せずに、これが簡単でメリットがあるとは思えません。
私は新しいアプリをつなぎ合わせようとしてきましたが、今回は独自のクラスで機能を維持しているので、誰かが私が愚かで間違っていると言ってくれるか、少なくともいくつかのガイダンスを教えてくれることを望んでいました。
このアプリは、最終的にApp.Configから接続文字列をロードし、SQLデータベースに接続して、データベースの複数のテーブルをDataSetに入力します。クラスの問題全体に頭を悩ませることはできないので、これは決して機能的ではありません。
partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string myConnectionString;
private void Form1_Load(object sender, System.EventArgs e)
{
AppConfig cfg = new AppConfig();
if (cfg.loadConfig())
{
myConnectionString = cfg.myConnectionString();
}
if (!String.IsNullOrEmpty(myConnectionString))
{
SQLConn SQL = new SQLConn();
if (SQL.createConnection(myConnectionString))
{
MessageBox.Show("Connected!");
}
}
}
}
class myDataSet
{
DataSet DataSet()
{
DataSet ds = new DataSet();
SQLConn sql = new SQLConn();
return ds;
}
public void fillData()
{
try
{
SqlCommand sqlCmd = new SqlCommand("SELECT * FROM hardware");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
class SQLConn : IDisposable
{
SqlConnection sqlConn;
public bool createConnection(string myConnectionString)
{
sqlConn = new SqlConnection();
sqlConn.ConnectionString = myConnectionString;
try
{
sqlConn.Open();
return true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return false;
}
public void Dispose()
{
if (sqlConn.State == ConnectionState.Open)
{
sqlConn.Close();
sqlConn.Dispose();
}
}
}
class AppConfig
{
Configuration cfg;
public bool loadConfig()
{
try
{
cfg = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
if (!File.Exists(cfg.FilePath))
{
MessageBox.Show("No configuration file");
}
return true;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
return false;
}
public string myConnectionString()
{
string connectionString = ConfigurationManager.ConnectionStrings["IT_ProjectConnectionString"].ConnectionString;
return connectionString;
}
}