这段时间研究了WCF和C#的ADO.NET, SQL操作,LINQ查询虽然方便,但是对于刚开始学习,特别是没有好的指导老师的人来说,还是不推荐大范围使用。所以这里还是使用常规的数据库操作方法。
1. 连接数据库,其实作用并不大,好处在于自动生成ConnectString。
右键点击 Data Connections,选择Add Connection, 开始添加数据库,注意\SQLEXPRESS,另外如果要远程链接,现在数据库中注册有权限的帐号,然后登陆。
2. 连接ADO.NET,作用在于会自动生成对于的数据结构类,方便我们的操作,也就不用每个表都要创建类了。
右键点击Project, 添加Data页的ADO.NET,同样也是配置数据库的连接。
3. 在我们第一次连接的数据库Server属性中有一个Connection String, Copy之。
public int SQL_connect()
{
SQLConnect = new SqlConnection();
SQLConnect.ConnectionString = "Data Source=WIN-01L9BROHARG\\SQLEXPRESS;Initial Catalog=TutorNet;Persist Security Info=True;User ID=ctq;Password=ctqmumu";
SQLConnect.Open();
if (SQLConnect.State != System.Data.ConnectionState.Open)
{
//TODO output error
return ErrorReturn;
}
return 0;
}
有返回值的数据库操作
public List SQL_select_user_By_ID(string UID)
{
if (SQLConnect == null) SQL_connect();
List listUser = new List();
try
{
SQLCommand = new SqlCommand();
SQLCommand.Connection = SQLConnect;
SQLCommand.CommandText = "SELECT * FROM UserTable WHERE UID = '" + UID + "';";
SQLCommand.CommandType = CommandType.Text;
SqlDataReader reader = SQLCommand.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
listUser.Add(new UserTable
{
UID = (int)reader[0],
Password = (string)reader[1],
Name = (string)reader[2],
PhoneNumber = (reader[3] is System.DBNull) ? null : (string)reader[3],
Email = (string)reader[4],
ST = (reader[5] is System.DBNull) ? 0 : (int)reader[5],
Point = (reader[6] is System.DBNull) ? 0 : (int)reader[6],
PopIndex = (reader[7] is System.DBNull) ? 0 : (int)reader[7],
Login = (int)reader[8]
});
}
}
else
{
//MessageBox.Show("No rows found.");
}
reader.Close();
}
catch (Exception e)
{
return null; // 因为在WCF部署后无法正确处理,所以return null
}
return listUser;
}
无返回类型的操作,返回为bool型,即插入,更新和删除操作
public bool SQL_UPDATE_UserTable_Login(string UID, int val)
{
Int32 recordsAffected = 0;
try
{
string queryString = "UPDATE UserTable SET Login=" + val + " WHERE UID=" + UID + " ;";
SqlCommand command = new SqlCommand(queryString, SQLConnect);
recordsAffected = command.ExecuteNonQuery();
}
catch (Exception e)
{
return false;
}
return true;
}