public static SqlConnection mySql = new SqlConnection();
static JavaScriptSerializer Js = new JavaScriptSerializer();
public static bool Connect(string db ,string ip ,string user ,string pw)
{
mySql.ConnectionString = "server =LAPTOP-Q2OVQVOQ;database = game1;user = sa1;pwd = 9wen9hua";
try
{
mySql.Open();
Console.WriteLine("数据库连接成功!");
return true;
}catch (Exception ex)
{
Console.WriteLine("数据看连接失败!" + ex.ToString());
return false;
}
}
#region 判定是否为安全字符
public static bool IsSaftString (string str)
{
return !Regex.IsMatch(str, @"[-|;|,|\/|\[|\]|\{|\}|%|@|\*\!|\'|]");
}
#endregion
#region 判断账户是否存在
public static bool IsAccountExist(string id)
{
if (!DbManager .IsSaftString (id))
{
return false;
}
string s = string.Format("select * from account where convert (nvarchar(255),id)='{0}';", id);
try
{
SqlCommand cmd = new SqlCommand(s, mySql);
SqlDataReader dataReader = cmd.ExecuteReader();
bool hasRows = dataReader.HasRows;
dataReader.Close();
return hasRows;
}catch (Exception ex)
{
Console.WriteLine("[数据库IsSafetring err]" + ex.ToString());
return false;
}
}
#endregion
#region 注册
public static bool MsgRegister(string id ,string pw)
{
if (!DbManager .IsSaftString (id))
{
Console.WriteLine("[数据库]Regester fail ,id not safe");
return false;
}
if (!DbManager .IsSaftString (pw))
{
Console.WriteLine("[数据库]Regester fail ,pw not safe");
return false;
}
if (IsAccountExist(id ))//这里应当不加判断号
{
Console.WriteLine("[数据库]Regester fail ,id exist");
return false;
}
string sql = string.Format("insert into account values ('{0}','{1}')", id, pw);
try
{
SqlCommand cmd = new SqlCommand(sql, mySql);
cmd.ExecuteNonQuery();
return true;
}catch (Exception ex)
{
Console.WriteLine("数据库注册失败!Regester fail !" + ex.ToString());
return false;
}
}
#endregion
#region 创建游戏对象并将其序列化
public static bool CreatPlayer(string id)
{
if (!DbManager .IsSaftString (id))
{
Console.WriteLine("[数据库]CreatPlayer fail id not safe!");
return false;
}
PlayerData playerData = new PlayerData();
string data = Js.Serialize(playerData);
string sql = string.Format("insert into player values (convert(nvarchar(255),id) = '{0}',convert(nvarchar(255),data) = '{1}';", id, data);
Console.WriteLine(sql);
Console.WriteLine(Js.Deserialize ( data,typeof (PlayerData)));
Console.WriteLine("我是测试代码");
try
{
SqlCommand cmd = new SqlCommand(sql ,mySql );
cmd.ExecuteNonQuery();//用来之星插入更新删除和其他没有返回值的sql明亮
return true;
}catch (Exception ex)
{
Console.WriteLine("[数据库]CreatPlayer fail !" + ex.ToString());
return false;
}
}
#endregion
#region 检查密码
public static bool CheckPassWord(string id ,string pw)
{
if (!DbManager.IsSaftString(id))
{
Console.WriteLine("[数据库]Regester fail ,id not safe");
return false;
}
if (!DbManager.IsSaftString(pw))
{
Console.WriteLine("[数据库]Regester fail ,pw not safe");
return false;
}
string sql = string.Format("select * from account where convert(nvarchar(255),id)='{0}' and convert(nvarchar(255),pw)= '{1}' ; ", id, pw);
try
{
SqlCommand cmd = new SqlCommand(sql, mySql);
SqlDataReader dataReader = cmd.ExecuteReader();
bool hasRows = dataReader.HasRows;
dataReader.Close();
return hasRows;
}catch (Exception ex)
{
Console.WriteLine("[数据库]CheckPassWord fail !" + ex.ToString());
return false;
}
}
#endregion
#region 获取玩家数据
public static PlayerData GetPlayerData(string id)
{
if (!DbManager.IsSaftString(id))
{
Console.WriteLine("[数据库]Regester fail ,id not safe");
return null;
}
string sql = string.Format("select * from player where convert(nvarchar(255),id) = '{0}';", id);
try
{
SqlCommand cmd = new SqlCommand(sql, mySql);
SqlDataReader dataReader = cmd.ExecuteReader();
if (!dataReader .HasRows)
{
dataReader.Close();
return null;
}
dataReader.Read();
string data = dataReader.GetString(1);
PlayerData playerData = Js.Deserialize<PlayerData>(data);
dataReader.Close();
return playerData;
}catch (Exception ex)
{
Console.WriteLine("[数据库]Get playerdata fail !" + ex.ToString());
return null;
}
}
#endregion
#region 更新玩家数据
public static bool UpdataPlayData(string id ,PlayerData playerData) {
string data = Js.Serialize(playerData);
string sql = string.Format("update player set convert(nvarchar(255),data)='{0}' where convert(nvarchar(255),id) = '{1}';", data, id);
try
{
SqlCommand cmd = new SqlCommand(sql, mySql);
cmd.ExecuteNonQuery();
return true;
}catch (Exception ex)
{
Console.WriteLine("[数据库]updatplayerdata fail " + ex.ToString());
return false;
}
}
其他语法应当没有错误 错误只在数据库相关的语句上 如帮忙 不胜感激 如能告知语法问题 另有答谢