从毕业出来到0基础入行工作4个月!分享+记录(第一个月回顾)
先从最基本的数据库说起(学习时长一周)
四个基本数据库语句------增加 删除 修改 查询
?为待填入,*为全部查询
Insert into t_表名字(字段1,字段n)value('?','?')
Delete From t_表名字 Where 字段='?'
Update t_表名字 Set 字段名1='?' 字段名n='?' Where 字段名='?'
Select *字段 From t_表名字 Where 字段='?'
接下来是进阶的数据库操作,
Select * from student order by 字段名 desc;//查询降序排序,注意系统默认是asc排序
有了数据库,就可以用C++++进行与之对应的,链接,运行操作
string connString = "server=127.0.0.1;User Id=root;password=30K;Database=1y10";
//链接数据对应地址
MySqlConnection connection = new MySqlConnection(connString);
if (connection.State == ConnectionState.Closed) connection.Open(); //链接sql
MySqlConnection connection = new MySqlConnection(connString);
if (connection.State == ConnectionState.Closed) connection.Open();
string sql = string.Format("//sql语句"); 或 $"//sql语句";
MySqlCommand com = new MySqlCommand(sql,connection);
①int result = com.ExecuteNonQuery(); //运行sql
②DataSet ds = new DataSet();
com.Fill(ds);//填充数据到DataSet
/// 执行无参SQL语句,并返回执行行数
/// </summary>
public static int GetScalar(string safeSql)
{
SqlCommand cmd = new SqlCommand(safeSql, Connection);
int result = Convert.ToInt32(cmd.ExecuteScalar());
return result;
}
/// <summary>
/// 执行有参SQL语句,并返回执行行数
/// </summary>
public static int GetScalar(string sql, params SqlParameter[] values)
{
SqlCommand cmd = new SqlCommand(sql, Connection);
cmd.Parameters.AddRange(values);
int result = Convert.ToInt32(cmd.ExecuteScalar());
return result;
}
/// <summary>
/// 执行无参SQL语句,并返SqlDataReader
/// </summary>
public static SqlDataReader GetReader(string safeSql)
{
SqlCommand cmd = new SqlCommand(safeSql, Connection);
SqlDataReader reader = cmd.ExecuteReader();
return reader;
}
-------以上为用MySql,的数据库管理操作,接下来是以 Execl txt CSV文件的数据库操作-------------
public static DataTable OpenCSV(string filePath, Encoding encoding)//CSV为例
{
try
{
FileStream fs = new FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read);
//Encoding encoding = Encoding.UTF8; //Encoding.ASCII;//
DataTable dt = new DataTable();
StreamReader sr = new StreamReader(fs, encoding);
//记录每次读取的一行记录
string strLine = "";
//记录每行记录中的各字段内容
string[] aryLine = null;
string[] tableHead = null;
//标示列数
int columnCount = 0;
//标示是否是读取的第一行
bool IsFirst = true;
//逐行读取CSV中的数据
while ((strLine = sr.ReadLine()) != null)
{
if (IsFirst == true)
{
tableHead = strLine.Replace("\"", "").Split(',');
IsFirst = false;
columnCount = tableHead.Length;//根据文件第一行,确定文件的列数
//创建列
for (int i = 0; i < columnCount; i++)
{
DataColumn dc = new DataColumn(tableHead[i]);
dt.Columns.Add(dc);
}
}
else
{
aryLine = strLine.Replace("\"", "").Split(',');
DataRow dr = dt.NewRow();
for (int j = 0; j < columnCount; j++)
{
dr[j] = aryLine[j];
}
dt.Rows.Add(dr);
}
}
if (aryLine != null && aryLine.Length > 0)
{
dt.DefaultView.Sort = tableHead[0] + " " + "asc";
}
sr.Close();
fs.Close();
return dt;
}
catch (Exception ex)
{
//Log.WriteLog(LogFile.Error, "读取csv文件出错\r\n" + ex);
MessageBox.Show("找不到轴控制信号:" + filePath);
Application.Exit();
return null;
}
}
public void InitDmStruct()
{
DataTable dt = OpenCSV(Application.StartupPath + "\\t_plcdatanew.csv", Encoding.GetEncoding("GB2312"));//UTF8
if (dt == null) Application.Exit();
foreach (DataRow dr in dt.Rows)
{
DMStruct dm = InitDMPLC(dr);//一个接受文件字段的类
UserAuthorityHelper.dmPLC.Add(dm);//加载入PLC
}
}