1.新建表结构

注释:conn指的是MySqlConnection 我之前已经设置和连接好了

  1. /// <summary>
  2. /// 创建数据库中的表
  3. /// </summary>
  4. /// <param name="tableName">输入表名</param>
  5. public void AlterTableExample(string tableName)
  6. {
  7. string createStatement = "CREATE TABLE " + tableName + "(Id int,Latitude double,Longtitude double,Height double,KiloPos double,Tag text,PointType text)";
  8. //括号内为所建表中添加的字段
  9. if (conn.State == ConnectionState.Closed)
  10. {
  11. conn.Open();
  12. }
  13. // 建表
  14. using (MySqlCommand cmd = new MySqlCommand(createStatement, conn))
  15. {
  16. int tmp = cmd.ExecuteNonQuery();
  17. }
  18. }

升级版:可以添加中文字符(通过设置字符集为utf8),并且直接判断表是否存在
//如果表设置字符集为utf8则无需去掉中文字符
//Regex reg = new Regex(@”[\u4e00-\u9fa5]”);//去掉中文字符
//p.Tag = reg.Replace(s[4],””).Trim();

  1. /// <summary>
  2. /// 判断数据库表是否存在,如果不存在创建数据库中的表,存在返回true
  3. /// </summary>
  4. /// <param name="tableName">输入表名</param>
  5. public bool AlterTableExample(string tableName)
  6. {
  7. bool flag = false;
  8. string createStatement = "CREATE TABLE " + tableName + "(Id int auto_increment primary key,Longtitude double,Latitude double,Height double,KiloPos double,Trackid int,Tag text,PointType text)";
  9. string charset = "engine=myisam default charset=utf8 auto_increment=1";
  10. createStatement += charset;
  11. //括号内为所建表中添加的字段
  12. if (conn.State == ConnectionState.Closed)
  13. {
  14. conn.Open();
  15. }
  16. // 建表
  17. using (MySqlCommand cmd = new MySqlCommand(createStatement, conn))
  18. {
  19. try
  20. {
  21. int tmp = cmd.ExecuteNonQuery();
  22. }
  23. catch(Exception ex)
  24. {
  25. Console.WriteLine(ex.Message);
  26. flag = true;
  27. }
  28. }
  29. return flag;
  30. }

2.插入数据

  1. /// <summary>
  2. /// 向数据库中插入数据
  3. /// </summary>
  4. /// <param name="tableName">输入表名</param>
  5. public void getInsert(MySqlCommand mySqlCommand)
  6. {
  7. try
  8. {
  9. mySqlCommand.ExecuteNonQuery();
  10. }
  11. catch (Exception ex)
  12. {
  13. String message = ex.Message;
  14. Console.WriteLine("插入数据失败了!" + message);
  15. }
  16. }

3.执行命令语句

  1. /// <summary>
  2. /// 建立执行命令语句对象
  3. /// </summary>
  4. /// <param name="sql"></param>
  5. /// <param name="mysql"></param>
  6. /// <returns></returns>
  7. public MySqlCommand getSqlCommand(String sql, MySqlConnection mysql)
  8. {
  9. MySqlCommand mySqlCommand = new MySqlCommand(sql, mysql);
  10. return mySqlCommand;
  11. }

4.使用步骤

  1. //创建表格
  2. AlterTableExample(tableName);
  3. //插入数据的指令
  4. string sqlInsert = "insert into " + TableName + " (Id,Latitude,Longtitude,Height,KiloPos,Tag,PointType) values('" + p.ID + "','" + p.Lat + "','" + p.Lon + "','"+p.Hgt+ "','"+p.KiloPos+ "','"+p.Tag+ "','" +p.pointType.ToString() + "')";
  5. //执行插入的指令
  6. MySqlCommand cmd = ms.getSqlCommand(sqlInsert, mysql);
  7. cmd.ExecuteNonQuery();

5.使用数据库处理海量数据的步骤

https://www.cnblogs.com/520playboy/p/6275233.html

6.删除表

  1. /// <summary>
  2. /// 删除表
  3. /// </summary>
  4. /// <param name="tableName"></param>
  5. private void DeleteTable(string tableName)
  6. {
  7. string deleteCmd = string.Format("drop table {0}", tableName);
  8. using (MySqlCommand cmd = new MySqlCommand(deleteCmd, conn))
  9. {
  10. try
  11. {
  12. int tmp = cmd.ExecuteNonQuery();
  13. }
  14. catch (Exception ex)
  15. {
  16. Console.WriteLine(ex.Message);
  17. }
  18. }
  19. }

7.数据库表转DataTable

  1. //MySql的表转DataTable
  2. public DataTable PullDataTableFromSQL(string tableName)
  3. {
  4. if(conn==null||conn.State==ConnectionState.Closed)
  5. {
  6. SetConnStr();
  7. SetSqlConnection(connStr);
  8. }
  9. // This will hold the records.
  10. DataTable inv = new DataTable();
  11. // Prep command object.
  12. string sql = "Select * From "+tableName;
  13. using (MySqlCommand cmd = new MySqlCommand(sql,conn))
  14. {
  15. MySqlDataReader dr = cmd.ExecuteReader();
  16. // Fill the DataTable with data from the reader and clean up.
  17. inv.Load(dr);
  18. dr.Close();
  19. }
  20. return inv;
  21. }