首页 > 解决方案 > 将数据表中的值插入数据库

问题描述

我已将父 Gridview 和子 Gridview 值存储到数据表中。我使用了三层架构并希望将这些值保存到数据库中,但是在一次迭代中使用 for 循环应用迭代时,该值是整数,因此需要,但另一次迭代该值是 varchar 我无法转换为 varchar,因为我的一些值是整数和一些 varchar。

public string Insertrecord(DataTable dts,string CourseCode,int CourseId)
{
        DBHelper.OpenConection();
        DBHelper.BeginTransaction();

        string query = "";

        for (int i = 0; i <= dts.Rows.Count - 1; i++)
        {
            for (int j = 0; j <= dts.Columns.Count - 1; j++)
            {
                 query = ("Insert into ShortCourses values('" + CourseId + "','" + CourseCode + "','" + dts.Rows[i][j] + "')");
                 DBHelper.ExecNonQuery(query).ToString();
            }
        }

        DBHelper.CommitTransaction();
        DBHelper.CloseConnection();

        return query;
}

标签: asp.net

解决方案


您应该将所有值视为字符串,因为您持有的值query是字符串。另外下面不推荐写好代码。请始终进行参数化查询。

public string Insertrecord(DataTable dts,string CourseCode,int CourseId)
{
      DBHelper.OpenConection();
      DBHelper.BeginTransaction();
      string query = "";
      for (int i = 0; i <= dts.Rows.Count - 1; i++)
      {
          for (int j = 0; j <= dts.Columns.Count - 1; j++)
          {
               query = ("Insert into ShortCourses values('" + CourseId.ToString() + "','" + CourseCode.ToString() + "','" + Convert.ToString(dts.Rows[i][j]) + "')");
               DBHelper.ExecNonQuery(query).ToString();
          }
      }
      DBHelper.CommitTransaction();
      DBHelper.CloseConnection();
      return query;
}

参数化查询。

 public string Insertrecord(DataTable dts,string CourseCode,int CourseId)
    {
          DBHelper.OpenConection();
          DBHelper.BeginTransaction();
          string query = "";
          for (int i = 0; i <= dts.Rows.Count - 1; i++)
          {
              for (int j = 0; j <= dts.Columns.Count - 1; j++)
              {
                  query = "Insert into ShortCourses values(@Id, @Code, @Val)";           
                  SqlCommand cmd = new SqlCommand(query, con);

            //Pass values to Parameters
                 cmd.Parameters.AddWithValue("@Id", CourseId.ToString());
                 cmd.Parameters.AddWithValue("@Code", CourseCode.ToString());
                 cmd.Parameters.AddWithValue("@Val", Convert.ToString(dts.Rows[i][j])));                   
                 cmd.ExecuteNonQuery();
          }
          DBHelper.CommitTransaction();
          DBHelper.CloseConnection();
          return query;
    }

推荐阅读