//方法一:用DataAdapter方法,優點:不用寫insert語句且不用關心values后邊的各字段的形式,如要不要加單引號之類的;缺點:插入一條記錄的效率不及寫單純insert語句
SqlConnection conn = ConnectDB(server, db);
string sql = "select * from " + tableName; SqlDataAdapter da = new SqlDataAdapter(sql, conn); SqlCommandBuilder scb = new SqlCommandBuilder(da);//SqlCommandBuilder根據insertCommand構造 updatecommand和deletecommand DataTable dt = new DataTable(); exeTable(conn, dt, sql); DataRow dr = dt.NewRow(); dr.ItemArray = columnValues; dt.Rows.Add(dr); da.Update(dt); conn.Close(); // 方法二:單純寫insert語句插入一條記錄,優點:單條數據插入效率高 缺點:需要注意sql語句的構造和sql語句中參數的類型 string sql = "insert into 表名 values(" + 值1+ "," + 值2+ ",'" + 值3+ "',"+ 值4+ "," + 值5+ "," + 值6+",@參數1,'" + 值7+ "','"+ 值8+ "')"; SqlParameter param = new System.Data.SqlClient.SqlParameter("@參數1", SqlDbType.Image); param.Value = 值9; SqlConnection conn = sqlHelper.ConnectDB(); SqlCommand cmd = new System.Data.SqlClient.SqlCommand(sql, conn); if (param != null) cmd.Parameters.Add(param); cmd.ExecuteNonQuery(); conn.Close(); //方法三:插入大批量數據時用SqlBulkCopy,單條記錄插入效率較慢 DataTable dt = new DataTable(); dt.Columns.Add("列名1", typeof(string)); dt.Columns.Add("列名2", typeof(byte[])); DataRow dr = dt.NewRow(); dr["列名1"] = 值1; dr["列名2"] = 值2; dt.Rows.Add(dr); dr = dt.NewRow(); dr["列名1"] = 值3; dr["列名2"] = 值4; dt.Rows.Add(dr); SqlBulkCopy bulk = new System.Data.SqlClient.SqlBulkCopy(conn); bulk.DestinationTableName=目標表名; bulk.BatchSize=dt.Rows.Count; bulk.ColumnMappings.Add("列名1",目標列名1); bulk.ColumnMappings.Add("列名2",目標列名2); bulk.WriteToServer(dt); bulk.Close(); conn.Close();