摘要:基于Visual Studio2005開發工具,利用C#+SqlServer2000的C/S模式軟件開發受到絕大多數軟件開發愛好者所青睞,但一直有一個問題即:客戶端數據庫連接參數設置亟待解決,本文主要是介紹如何利用API函數GetPrivateProfileString和WritePrivateProfileString解決此問題。
關鍵詞:C# INI文件操作
1 開發及調試環境
安裝windows server2003網絡操作系統、sqlserver2000數據庫和VS2005開發工具的計算機一臺,此計算機主要用于程序編寫和調試。
2 測試用數據庫
在sqlserver2000環境下,建立一個數據庫即:測試庫,同時也可以設置此數據庫的用戶和密碼,但也可采用系統默認用戶即sa。
3 程序所涉及的核心代碼
3.1 導入命名空間 在窗體導入命名空間位置處導入所需命名空間,具體如下:
using System.Runtime.InteropServices;
using System.Data.SqlClient;
using System.IO;
3.2 聲明API函數 在窗體類中聲明所需的API函數
[DllImport(\"kernel32\")]
private static extern int GetPrivateProfileString(string section,string key,string defVal,StringBuilder retVal,int size, string filePath);
[DllImport(\"kernel32\")]
private static extern long WritePrivateProfileString(string section,string key,string val,string filePath);
3.3 自定義讀、寫INI文件函數
3.3.1 寫INI文件函數
private void wini(string sip,string de,string uid,string pwd,string fe)
{
string fh= Directory.GetCurrentDirectory() + \"\\\\\" + fe;
long sz1=WritePrivateProfileString(\"sysset\",\"sip\",sip,fh);
long sz2=WritePrivateProfileString(\"sysset\",\"de\",de,fh);
long sz3= WritePrivateProfileString(\"sysset\",\"uid\",uid,fh);
long sz4 = WritePrivateProfileString(\"sysset\",\"pwd\", pwd, fh);
}
3.3.2 讀INI文件函數 private void rini(TextBox t1,TextBox t2,TextBox t3,TextBox t4,string fe)
{
string fh = Directory.GetCurrentDirectory() + \"\\\\\"+fe;
StringBuilder temp = new StringBuilder();
int fip =GetPrivateProfileString(\"sysset\",\"sip\",\"\",temp, 255,fh);
int se =GetPrivateProfileString(\"sysset\",\"de\",\"\",temp, 255,fh);
int ge =GetPrivateProfileString(\"sysset\",\"uid\",\"\",temp, 255,fh);
int gw = GetPrivateProfileString(\"sysset\",\"pwd\",\"\", temp,255,fh);
t1.Text =temp.ToString();t2.Text =temp.ToString();
t3.Text =temp.ToString();t4.Text =temp.ToString();
}
3.3.3 數據庫連接函數 private Boolean getconn(string ip,string de,string uid,string pwd)
{
SqlConnection myconn = new SqlConnection();
myconn.ConnectionString = \"server=\"+ip+\";database=\"+de+\";uid=\"+uid+\";pwd=\"+pwd;
try {myconn.Open();return true;}
catch {return 1;}
}
上述,即為本程序的核心代碼,各位愛好者稍加整理、修改即可使用,同時敬請各位同行批評指正。