Winform在Core內因為沒有自帶App.config,所以要自行建立,但網上大多教學是創建appsetting.json居多,因此嘗試著用此方式建立連線字串。
首先要先新增一個josn檔,命名為appsettings.json,這個命名據說是大小寫不要改動比較好,所以我就沒有將其命名為大寫開頭的Appsettings。
接著很重要的一點,也是因為這點沒改,我一直測試失敗,改了之後就好了,那就是將.json檔的屬性內的「複製到輸出目錄」改為「永遠複製」。
這個沒改的話,接下來的連線字串會一直讀到null。
接著設定appsettings,json的連線字串:
{
"ConnectionStrings": {
"ERPDB": "Data Source=IP;Initial Catalog=DBName;Persist Security Info=True;User ID=DBUserID;Password=DBPassword"
"SYSDB": "Data Source=IP;Initial Catalog=DBName;Persist Security Info=True;User ID=DBUserID;Password=DBPassword"
...以此方式增加
}
}
接著設定連線的Class,比如我命名了一個Class_ForSQL.cs,然後在檔案內設置我的連線字串:
using System.Data.SqlClient;
using Microsoft.Extensions.Configuration;
using System.Windows.Forms;
using System.IO;
namespace WinFormsApp1
{
class Class_ForSQL
{
private readonly IConfiguration Config;
private readonly string DBERP;
public Class_ForSQL()
{
var Builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
Config = Builder.Build();
DBERP = Config.GetConnectionString("ERPDB");
}
}
}
這邊要特別注意的是,System.Data.SqlClient與Microsoft.Extensions.Configuration直接using是無法直接宣告的,需要在NuGet下載:
本以為這樣就好了,但發現AddJsonFile無法使用,於是又下載了Microsoft.Extensions.Configuration.json才能使用,但特別的是,它並不需要using。
接著就可以在剛才的Class_ForSQL內新增查詢的Function了,這邊就Framework內怎麼寫,就幾乎是照著寫(連線字串的地方直接使用變數即可):
public DataTable FindEm(string em)
{
DataTable dt = new DataTable();
using (SqlConnection conn = new SqlConnection(DBERP))
{
conn.Open();
SqlCommand cmd = new SqlCommand(@"select EmID 員工編號,EmName 員工姓名 from Em where EmID=@Em", conn);
cmd.Parameters.AddWithValue("@Em", em);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(dt);
}
return dt;
}
寫完之後測試一下呼叫連線字串是否能正常使用:
發現DataGridView能正確抓到Class內的DataTable做為資料來源,那就OK了~
只是個路過的新手,發文有誤請告知。