
1读取ini文件键值对的类,这样写
class ConfigureFile
{
public string ConfigureFilePath; //INI文件名
//声明读写INI文件的API函数
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
public ConfigureFile()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
//类的构造函数,传递INI文件名
public ConfigureFile(string ConfigureFilePath)
{
thisConfigureFilePath = ConfigureFilePath;
}
//写INI文件
public void WriteConfigureFileValue(string Section, string Key, string Value)
{
WritePrivateProfileString(Section, Key, Value, thisConfigureFilePath);
}
//读取INI文件指定
public string ReadConfigureFileValue(string Section, string Key)
{
StringBuilder temp = new StringBuilder(255);
int i = GetPrivateProfileString(Section, Key, "", temp, 255, thisConfigureFilePath);
ConsoleWrite(tempToString());
if (tempToString() == null ||tempToString() =="")
{
throw new Exception("Profileini读取配置文件为空");
}
return tempToString();
}
}
2处理读取的键值对这样写
/// <summary>
/// 返回Profileini配置参数
/// </summary>
public class Profile
{
private static ConfigureFile ReadConfigureFile = new ConfigureFile("\\Profileini");
/// <summary>
/// 返回数据库服务名
/// </summary>
/// <returns></returns>
public static string getServerName()
{
//对于你的问题 这个返回值就是nor 在ini文件里就是ServerName=nor
return ReadConfigureFileReadConfigureFileValue("DataBase", "ServerName");
}
/// <summary>
/// 返回登陆账户
/// </summary>
/// <returns></returns>
public static string getLogId()
{
//对于你的问题 返回值就是 sa 在ini里就是LogId=sa
return ReadConfigureFileReadConfigureFileValue("DataBase", "LogId");
}
/// <summary>
/// 返回登陆密码
/// </summary>
/// <returns></returns>
public static string getPassWord()
{
//对于你的问题返回值就是 在ini里就是PassWord=(是加密后的密码 密文形式)
return ReadConfigureFileReadConfigureFileValue("DataBase", "PassWord");
}
}
我把读ini文件 和读取ini文件中的key/value对分开写 这样是为了让你能更灵活的去添加ini中的key/value对 当你添加keyvalue对时 只需要在Profile类中添加相应的get方法就可以了 方便修改
ini文件中的键值对写成这样
[DATABASE]
ServerName='nor'
LogId='sa'
PassWord=''(是密文形式)
3这是加密你密码的类 我用MD5配合加盐值进行加密 这样就很安全
public class MD5Encrypt
{
/// <summary>
/// 将明文用MD5加密
/// </summary>
/// <param name="strPwd">需要加密的明文</param>
/// <param name="strKey">用于加密的Key(加盐值)</param>
/// <returns>加密后得到的MD5值</returns>
public static string ToEncodingByMD5(string strPwd, string strKey)
{
string key = strKeyTrim();
string strEnPwd = stringEmpty;
if (keyLength == 0)
{
key = "lwk";//默认加盐值 你自己定义加盐值,要验证登录密码是否正确 需要传进和保存其加密时 //相同的加盐值 然后对比他们的密文是不是相同
}
byte[] Original = EncodingDefaultGetBytes(strPwd);
byte[] SaltValue = EncodingDefaultGetBytes(key);
byte[] ToKey = new byte[OriginalLength + SaltValueLength];
OriginalCopyTo(ToKey, 0);
SaltValueCopyTo(ToKey, OriginalLength);
MD5 st = MD5Create();
byte[] SaltPWD = stComputeHash(ToKey);
byte[] PWD = new byte[SaltPWDLength + SaltValueLength];
SaltPWDCopyTo(PWD, 0);
SaltValueCopyTo(PWD, SaltPWDLength);
strEnPwd = ConvertToBase64String(PWD);
return strEnPwd;
}
}
ASCII函数是认为定义了许多字符,没个字符有对应的代码,你可以对代码进行加减来改变字符,比如
大写字母
变
小写字母
等,你可以去找下
ASCII表
就容易理解了;)
这是程序中的编码错误:
Python的默认编码是ASCII模式,不支持utf8;
代码中如果存在中文字符的话,会出现提示错误;
解决方法:源代码文件第一行添加:#coding:utf-8,这样就可以避免了。
以上就是关于C# 数据库连接设置保存为 ini文件问题全部的内容,包括:C# 数据库连接设置保存为 ini文件问题、数据库中select ASCII('a') as 'a' ,ASCII('A') as 'A'怎么理解啊、python2.7 中文输出为ascii问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)